【发布时间】:2013-04-01 17:01:27
【问题描述】:
我正在用我的菜鸟头撞墙...
我有以下代码:
var guns2 =
[
["Model 17", "Glock"],
["Model 19", "Glock"],
["PPQ", "Walther"],
["P2000", "HK"],
["Model 92", "Beretta"],
["Model 34", "Glock"]
]
var gunsMake = function () {
for (i=0; i<guns2.length; i++){
var make = guns2[i][1];
if (make ==="Glock"){
}
else {
guns2.splice(i,1);
}
};
};
gunsMake();
console.log(guns2);
我在控制台得到的结果如下:
[["Model 17", "Glock"], ["Model 19", "Glock"], ["P2000", "HK"], ["Model 34", "Glock"]]
我想看到的是:
[["Model 17", "Glock"], ["Model 19", "Glock"], ["Model 34", "Glock"]]
"["P2000", "HK"]" 不应该在那里...我感觉它与 for 循环中的 "guns2.length" 参数有关..它似乎每次拼接时都会跳过后续数组,但我无法完全解决问题。
请有人引导我正确:)
【问题讨论】:
-
在迭代数组时不要修改它。将所需结果插入到不同的数组中。
-
啊,这很有意义,尤其是对于我需要实现的最终目标。 “推动”是实现这一目标的有效方式吗?
-
是的,
push是向数组添加元素的一种方法。您需要先创建一个不同的数组,然后在循环中创建push。
标签: javascript multidimensional-array splice