【发布时间】:2011-12-03 08:59:17
【问题描述】:
我想比较许多数组并组合任何相同的数组:
A = [1,2,3];
B = [1,2,3];
C = [1,2,3];
D = [10,11,12];
E = [10,11,12];
F = [10,11,12];
G = [13,14];
H = [13,14];
如果有相同的数组,那么我想用相同的数组创建新的数组:
I = [1,2,3];
J = [10,11,12];
K = [13,14];
我是否需要针对其他数组中的所有元素遍历一个数组中的每个元素?
for (var i in A) {
for (var j in B) {
if (A[i] == J[j]) {
// create new arrays
}
}
}
等等……
然后,从匹配项中创建新数组?听起来开销很大。
最好的方法是什么?
谢谢!
【问题讨论】:
-
for-in 迭代对象键。它不是 for-each 循环,您不应该在数组上使用它。
-
@missingno cmets 很棒,但请尝试解释为什么不应该使用某些东西或提供链接。谢谢。
-
我应该更明确一点。除了索引属性(您真正关心的属性)之外,数组还有其他属性,并且 for-in 也可以遍历它们(除非您的浏览器一直在保护您免受这种影响)。如果你决定有一天使用一个改变 Array.prototype 的库,比如 MooTools 或 Prototype,那么这将是特别危险的,并且突然很多虚假的东西开始出现在你的循环中。要迭代烤箱数组,您应该使用普通的 for 循环或其中一种迭代方法,如 .forEach(如果您的浏览器/库支持)
标签: javascript arrays loops for-loop