JavaScript通过ID从数据中删除项目

时间:2019-09-05 09:25:13

标签: javascript

我有一些数据:

data = [
    {id: 1, cols: 1, rows: 1, y: 0, x: 0},
    {id: 3, cols: 1, rows: 1, y: 0, x: 0},
    {id: 6, cols: 1, rows: 1, y: 0, x: 0}
];

我要删除ID为6的项目。

所以我尝试了这个:

function remove(id) {
    data.splice(data.indexOf(6), 0);
}

但是它不起作用。

如何修复此功能?

3 个答案:

答案 0 :(得分:6)

您可以使用Array.filter

data = [
    {id: 1, cols: 1, rows: 1, y: 0, x: 0},
    {id: 3, cols: 1, rows: 1, y: 0, x: 0},
    {id: 6, cols: 1, rows: 1, y: 0, x: 0}
];


function removeItem(arr, id){
    return arr.filter(item => item.id !== id);
}

data = removeItem(data, 6);

console.log(data);

答案 1 :(得分:4)

您可以使用

function remove(id) {
  data =  data.filter(item => item.id !== id);
}

过滤器函数将返回所有不具有作为参数提供的ID的项目。

答案 2 :(得分:1)

您可以使用Array.findIndex

data = [
    {id: 1, cols: 1, rows: 1, y: 0, x: 0},
    {id: 3, cols: 1, rows: 1, y: 0, x: 0},
    {id: 6, cols: 1, rows: 1, y: 0, x: 0}
];

function remove(id) {
    data.splice(data.findIndex(d => d.id === id), 1); 
    // here 2nd arg is 1 instead of 0 or it removes nothing
}
remove(6)
console.log(data)