【发布时间】:2016-11-02 20:32:38
【问题描述】:
我有 2 - 2D 数组,“item”和“data2”。 data2 是一个非常大的数组,其中包含约 22k 个项目,每个项目都有第二个项目(id [0] 和 name [1]),其中 item 是可变长度,每个项目有 9 个项目。我正在尝试过滤这两个数组以将 data[1] 与 item[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"
【问题讨论】:
-
您能否给我们一个您想要比较的阵列示例?一个包含 5-10 项数组的示例就足够了,只是为了更好地理解结构
-
来自 jQuery (api.jquery.com/jQuery.inArray) 的文档确实提到了有关 2D 数组的任何内容。但是,由于您正在查看每个数组中的特定子元素(基于您的第二个示例),因此您已经以最好的方式做到了。
-
一般说明 - jQuery 主要用于与 DOM 相关的操作。如果您必须在 JS 中处理原始数据分析,请查看 Lodash 等实用程序库
-
样本数据正确吗?您的代码执行
item[i][0].val,这表明您的数组包含对象,但您的示例数据仅显示字符串。 -
我的印象是你必须使用 .val/.value 从我在谷歌上看到的数组中获取值,但这是数组的正确结构
标签: javascript jquery arrays string string-comparison