想象一下:
const newItem = ['item 1', 'item 0', 'item 1', 'item 2', 'item 1', 'item 0'];
如果我想删除所有的“项目1”,我可以使用:
for (let i = newItem.length-1; i--;){
if (newItem[i] === "item 1") newItem.splice(i, 1);
}
问题是,如果我在另一个数组中有一个数组,该怎么办?
const newItem = [
['item 1', 'item 0', 'item 1'],
['item 2', 'item 1', 'item 0']
];
谢谢!
答案 0 :(得分:3)
您可以使用map
和filter
。map
将返回一个新数组,并在回调函数中检查是否有['item 1', 'item 0', 'item 1']
项和
['item 2', 'item 1', 'item 0']
includes
item 1
const newItem = [
['item 1', 'item 0', 'item 1'],
['item 2', 'item 1', 'item 0']
];
let k = newItem.map(function(item) {
return item.filter(elm => elm !== 'item 1')
});
console.log(k)
//newItem is not changed
console.log(newItem)
答案 1 :(得分:2)
您可以结合使用map
和filter
:
const newItem = [
['item 1', 'item 0', 'item 1'],
['item 2', 'item 1', 'item 0']
];
console.log(newItem.map(a => a.filter(e => e !== 'item 1')));
答案 2 :(得分:1)
只需使用嵌套的forEach()
循环:
const newItem = [
['item 1', 'item 0', 'item 1'],
['item 2', 'item 1', 'item 0']
];
newItem.forEach((innerArray) => {
innerArray.forEach((innerItem, i) => {
if (innerItem === "item 1") innerArray.splice(i, 1);
});
});
console.log(newItem);
答案 3 :(得分:1)
如果您知道要访问哪个索引,一种轻松访问此索引的方法:
var arr = [[1,2,3], [5,6,7]];
console.log(arr[0][1]); // This will print 2, the second element of the first array item.
您还可以使用嵌套循环轻松迭代嵌套数组项:
var arr = [
["item1", "item2", "item3"], ["item1", "item2", "item3"]];
arr.forEach(function(arrayItem){
arrayItem.forEach(function(item, index, array){
if(item === "item1"){
array.splice(index, 1); // Removes the matching item from the arrayItem.
}
});
});