gpt4 book ai didi

javascript - javascript forEach 循环可能出现奇怪的输出

转载 作者:行者123 更新时间:2023-12-02 15:21:05 25 4
gpt4 key购买 nike

这个输出有什么意义?也许我的想法是错误的,但它似乎相当具有描述性,它应该是东

var dataset = [1, 2, 3];

dataset.forEach(function(element, index, array) {
// (index, how many to remove)
array.splice(0, 0);
});

returns [1,2,3] as expected
<小时/>
dataset.forEach(function(element, index, array) {
array.splice(0, 3);
});

returns [] as expected
<小时/>
dataset.forEach(function(element, index, array) {
array.splice(0, 1);
});

returns [3]
<小时/>
dataset.forEach(function(element, index, array) {
array.splice(0, 2);
});

returns [3]

这让我质疑我对一切的理解,哈哈。我有一个更复杂的要求,其中对象数组可能具有属性“element.archived”

var dataset = [Object, Object, Object]

dataset.forEach(function(element, index, array) {
if (element.archived) array.splice(index, 1);
});

我正在尝试迭代该数组,并删除此属性值为 true 的所有对象。

最佳答案

因此,您想要从具有 archived: true 的数组中删除对象。有几种方法可以做到这一点:

您可以使用filter它返回一个新的过滤数组:

var arr = dataset.filter(function (el) {
return el.archived !== true;
});

或者您可以使用splice在迭代时删除元素:

for (var i = dataset.length - 1; i >= 0; i--) {
if (dataset[i].archived === true) dataset.splice(i, 1);
}

DEMO

关于javascript - javascript forEach 循环可能出现奇怪的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34048534/

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