JavaScript/JQuery字符串比较不工作或至少不是我认为它应该的方式

JavaScript/JQuery String comparison not working or at least not the way I think it should?

本文关键字:方式 字符串 JQuery 比较 工作 JavaScript      更新时间:2023-09-26

我有2个2D数组,"item"answers"data2"。Data2是一个非常大的数组,其中包含~22k个项目,每个项目都有第二个项目(id[0]和名称[1]),其中一个项目是一个可变长度,每个项目有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"

据我所知,您最好使用。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];
    }
}

然而,我不知道你用data2[k][1]假装什么。String对象上的val;此外,检查数据2[k][1]是否与项目[i][0]相同,然后分配相同的值对我来说没有多大意义;也许你可以解释一下。value是什么意思,我可以展开我的答案

相关文章: