use*_*343 3 javascript splice array-splice
我有以下代码:
var a = [{a: 1}, {a: 2}, {a: 3}];
a.map(function (item, index) {
console.log('call');
if (index < 1) {
a.splice(index, 1);
}
});
Run Code Online (Sandbox Code Playgroud)
但打电话只打印两次,我希望打印三次.我知道这splice搞砸了数组,但这种行为有一些解决方法吗?
谢谢!
如果你想在迭代时修改数组,那么通常,最好使用一个普通的for循环,因为你可以控制迭代并纠正你的修改.
如果您的修改只是删除当前元素,那么向后for循环是最简单的,因为在删除当前元素时不必进行任何更正.这是一个例子:
var x = [{a: 1}, {a: 2}, {a: 3}];
for (var i = x.length - 1; i >= 0; i--) {
if (x[i].a === 2) {
// remove current element
x.splice(i, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不介意在迭代结果中创建新数组,则可以使用其他方法,例如.filter().
| 归档时间: |
|
| 查看次数: |
7218 次 |
| 最近记录: |