es6如何快速的删除数组元素

有这么一个数组

let arr = [
            {id:1,value:2},
            {id:2,value:3},
            .......
          ]

想删除数组里id=8的元素,
使用es6如何方便快捷的实现

阅读 109.6k
15 个回答
arr = arr.filter(({ id }) => id !== 8);
arr.splice(arr.findIndex(v => v.id === 8),1);

我觉得还是要用splice,因为你是要删,而不是要创建一个新的数组啊。

arr = arr.filter(function(val){
          return val.id!=8;
});
let arr = [
    {id:1,value:2},
    {id:2,value:3},
    {id:8,value:9}
     ]
const newArr =  arr.filter(obj=>obj.id!==8)
新手上路,请多包涵
const arr = [{ id: 1 }, { id: 8 }]
const index = arr.findIndex(item => item.id === 8)
index > -1 && arr.splice(index, 1)

第一步迭代找出 id 为 8 的元素的下标,第二部用 splice 删除元素:

if (index > -1) {
    array.splice(index, 1);
}

我来抛砖引玉吧~~
有个思路是按id的值作为数组的序号来进行存储,如arr[8] = {id:8,value:8};
然后你要置空时直接arr[8] = undefined即可;
拿数组时走下filter即可,arr2 = arr1.filter(item => item)。

let arr = [
            {id:1,value:2},
            {id:2,value:3},
            {id:3,value:3},
            {id:4,value:3},
            {id:5,value:3},
            {id:6,value:3},
            {id:7,value:3},
            {id:6,value:3}
          ]
        var myarr = arr.filter(function(s){
            if(s.id==8){
                return false;
            }else{
                return s;
            }
        }) ;
        console.log(myarr); 

用lodash

import _ from lodash;

var array = [1, 2, 3, 4];
var evens = _.remove(array, function(n) {
  return n % 2 == 0;
});
 
console.log(array);
// => [1, 3]
 
console.log(evens);
// => [2, 4]

filter好,可以批量删除数据

新手上路,请多包涵
let arr = [
            {id:1,value:1},
            {id:2,value:2},
            {id:3,value:3},
            {id:4,value:4},
            {id:5,value:5},
            {id:6,value:6},
            {id:7,value:7},
            {id:8,value:8}
]
console.log(arr.filter(s=>{return s.id===8?false:s}));
arr.forEach((i,x)=>{
if(i.id===8)arr.splice(x,1)
})
宣传栏