gpt4 book ai didi

javascript - 在 map 函数中调用 splice

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:15:11 24 4
gpt4 key购买 nike

我有以下代码:

var a = [{a: 1}, {a: 2}, {a: 3}];
a.map(function (item, index) {
console.log('call');
if (index < 1) {
a.splice(index, 1);
}
});

但是call只打印了两次,我期望打印三次。我知道 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);
}
}

如果您不介意创建一个新数组作为迭代的结果,您可以使用其他方法,例如 .filter()

关于javascript - 在 map 函数中调用 splice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23399386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com