日期:2014-05-16  浏览次数:20360 次

数组arr1,arr2,arr3,将arr1与arr2相同的数组输出到arr3并再用arr3进行其他判断
//这是一个下拉菜单的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;
}
}
}
}

//最后输出的标准下拉菜单为:
//├标准
//│ ├法规
//│ ├文件


------解决方案--------------------
你这肯定不行阿 .. arr3哪来的? 一个new Array(), 还能写出for循环.下标都是0 怎么循环阿?而且你要比较arr1 和arr2 arr2在哪呢 完全没看到阿..
------解决方案--------------------
数组用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共同的元素了。