Javascript数组:删除array

时间:2019-04-18 12:20:54

标签: javascript

想象一下:

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']
];

谢谢!

4 个答案:

答案 0 :(得分:3)

您可以使用mapfiltermap将返回一个新数组,并在回调函数中检查是否有['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)

您可以结合使用mapfilter

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.
         }
    });
});