gpt4 book ai didi

javascript - 从数组中删除单个项目或数组的函数 - javascript

转载 作者:行者123 更新时间:2023-11-30 09:31:32 27 4
gpt4 key购买 nike

我有一个包含一些单项和一些数组的数组:

var groceries = ["toothpaste", ["plums", "peaches", "pineapples"], ["carrots", "corn", "green beans"], "orange juice", ["chocolate", "ice cream"], "paper towels", "fish"];

我想编写一个函数来在调用时删除其中的一些项或数组。

对于单品,我写了这个函数:

function removeItems(arr, item) {
for ( var i = 0; i < item.length; i++ ) {
var index = arr.indexOf(item[i]);
if (index > -1) {
arr.splice(index, 1);
}
}
};

然后我可以调用:

removeItems(groceries, ["fish", "orange juice"]);

这完全符合我的要求。但是,我无法弄清楚如何使该函数也能够从较大的数组中删除数组(例如 ["chocolate", "ice cream"])。我该怎么做?

最佳答案

使用 Array#reduce 创建键字典。如果该项是数组,则连接所有值以创建键。然后通过生成相同的键过滤所有项目,并根据字典检查它们。

注意 - Array#filter 创建一个新数组,并且不会更改原始数组。

var groceries = ["toothpaste", ["plums", "peaches", "pineapples"], ["carrots", "corn", "green beans"], "orange juice", ["chocolate", "ice cream"], "paper towels", "fish"];

function removeItems(arr, toRemove) {
function createKey(item) {
return Array.isArray(item) ? item.join('-') : item;
}

var removeDict = toRemove.reduce(function(d, item) {
var key = createKey(item);

d[key] = true;

return d;
}, {});

return arr.filter(function(item) {
var key = createKey(item);

return !removeDict[key];
});
}

var result = removeItems(groceries, ["fish", "orange juice", ["chocolate", "ice cream"]]);

console.log(result);

关于javascript - 从数组中删除单个项目或数组的函数 - javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45902773/

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