//这是一个下拉菜单的js文件,想实现的功能是将arr1[2]中的数组经过Obj,ChannelId,ChkID,arr2的筛选输出符合要求的下拉菜单。我在调用InitSelect(Obj,ChannelId,ChkID,arr2)的时候却什么都没有输出。请高手帮看一下哪里出错了。var arr1 = new Array();
arr1[0] = new Array (1,1,"├标准");
arr1[1] = new Array (1,15,"│ ├法规");
arr1[2] = new Array (1,19,"│ ├文件");
arr1[3] = new Array (1,2,"├队伍");
arr1[4] = new Array (1,3,"├动态");
arr1[5] = new Array (1,47,"│ ├领导");
arr1[6] = new Array (2,48,"│ ├工作");
arr1[7] = new Array (2,49,"│ ├推普");
function InitSelect(Obj,ChannelId,ChkID,arr2)//ChannelId:变量数字(比如为1)。ChkID:变量数字(比如为15)。arr2:一维数组(比如为:1,15,19)
{
var cTmp = ""; 
var j = 1;
var arr2 = new Array();
var arr3= new Array();
Obj.length = 0;
Obj.options[Obj.length] = new Option("点这里选择分类", "");
for(var i=0;i<arr3.length;i++)
{
//********我想用下面代码来将arr1与arr2相符的数组push到arr3中
for(var s in arr1[1]){
for(var x in arr2){
if(arr1[s][1]==arr2[x]){
arr3.push(arr1[s][0],arr1[s][1],arr1[s][2]);
}
}
}

//********我想用下面的代码把push后的arr3来进行一系列的判断
if(arr3[i][0]==ChannelId)
{
Obj.options[Obj.length] = new Option(arr3[i][2], arr3[i][1]);
if(arr3[i][1]==ChkID)
Obj.selectedIndex = j;
j = j + 1;

if(i+1<arr3.length)
{
if(arr3[i+1][0]!=ChannelId)
break;
}
}
}
}//最后输出的标准下拉菜单为:
//├标准
//│ ├法规
//│ ├文件

解决方案 »

  1.   

    是不是我写的太麻烦了?实际就是aar1和arr2相同的数输出到arr3中,然后找出符合ChannelId和ChkID的数输出为下拉菜单即可。我输出的时候下拉菜单是空白的,不知道是哪里写错了。
      

  2.   

    你这肯定不行阿  .. arr3哪来的? 一个new Array(), 还能写出for循环.下标都是0 怎么循环阿?而且你要比较arr1 和arr2  arr2在哪呢 完全没看到阿..
      

  3.   

    数组用for循环,不是for in循环,如果两个数组元素是字符串的话倒是有一个快速的方法。
    var arr1=['甲','乙','丙','丁'],
        arr2=['甲','丙','丁'],
        arr3=[],
        arr2s=arr2.join('');
    for(var i=0;i<arr1.length;i++){
        if(arr2s.indexOf(arr1[i])>-1) arr3.push(arr1[i]);
    }最后就得到arr1和arr2共同的元素了。