我有2个2D阵列," item"和" data2"。 data2是一个非常大的数组,包含~22k项,每个项都有第二项(id [0]和name [1]),其中item是一个可变长度,每个项目有9个项目。我试图过滤两个数组,以匹配数据[1]和项目[0],它们都包含项目的名称。
我尝试过jQuery.inArray(),这是我从未使用过的,所以我不确定它是否适用于子数组:
for(var i = 0; i < item.length; i++){
console.log(jQuery.inArray( item[i][0].text, data2 ));
}
然后我可以找到或想到做正常字符串比较的每一种方式:
for(var i = 0; i < item.length; i++){
for(var k = 0; k < data2.length; k++){
if(String(item[i][0].val) == String(data2[k][1].val){
item[i][6] = data2[k][1];
}else{
}
}
}
我很多为什么它不会比较数据。我也使用过.text而不是JS JQuery的新手,所以不确定我应该使用哪个
阵列:
项:
[0][0]"Armor Thermal Hardener II"
[1]""
[2]"Armor Hardener"
[3]""
[4]"Low"
[5]"5 m3"
[1][0]"Armor Kinetic Hardener II"
[1]""
[2]"Armor Hardener"
[3]""
[4]"Low"
[5]"5 m3"
[2][0]"Armor EM Hardener II"
[1]""
[2]"Armor Hardener"
[3]""
[4]"Low"
[5]"5 m3"
数据:
[0][0]"599"
[1]"Armor Thermal Hardener II"
[1][0]"600"
[1]"Armor Kinetic Hardener II"
[2][0]"601"
[1]"Armor EM Hardener II"
答案 0 :(得分:0)
根据我的理解,你最好使用.filter;此外,我不确定String构造函数是否理想,因为它将返回一个String对象,我不确定是否会按预期执行比较;此外,如果data2如此之大,我会把它的迭代器放在最前面;尝试这样的事情:
for ( var i = 0; i < data2.length; i++ ){
var it = item.filter(function(el){ return el[0] == data2[i][1]; });
if (it.length){ //exists
it[6] = data2[i][1];
}
}
但是,我不知道你假装在String上使用data2 [k] [1] .val。对于我来说,检查data2 [k] [1]是否与item [i] [0]相同然后分配相同的值也没有多大意义;也许你可以解释.value意味着什么,我可以扩展我的答案