删除对象数组条目

时间:2017-08-19 05:32:08

标签: javascript jquery arrays

(2) [{…}, {…}]
0:  {id: "201158", salary: 2}
1:  {id: "1627761", salary: 5}
length:2
__proto__: Array(0)

上面是我从控制台的对象。我在这里画了一些空白。点击,我试图通过id的值删除元素。

例如,如果点击的div的ID为 201158 ,则会从此数组中删除ID和工资。我试过删除没有运气。我已经尝试迭代数组并用下面的方法点击它,但没有。

var id = $(this).attr('id').toString(); 

removeFunction(teamOneSalaries, "id", id);

function removeFunction (myObjects,prop,valu)
{
   return myObjects.filter(function (val) {
      return val[prop] !== valu;
   });    
}   

关于我在这里做错了什么的想法?

2 个答案:

答案 0 :(得分:2)

由于函数返回一个新的过滤数组,您需要将其分配回变量。即:

teamOneSalaries = removeFunction(teamOneSalaries,"id",id);

无论出于何种原因,如果您不想这样做并想要更新传递给该函数的数组,您将不得不直接从该数组中删除项目,而不是返回一个新项目。

e.g。

function removeFunction(myObjects, prop, valu) {   
  for (let i = myObjects.length - 1; i >= 0; i--) {
    if (myObjects[i][prop] === valu)
      myObjects.splice(i, 1);
  }
}

答案 1 :(得分:0)

var myArray = [{id: "201158", salary: 2},{id: "1627761", salary: 5}];
    
myArray = myArray.filter(function( obj ) {
    return obj.id !== '1627761';
});

console.log(myArray);
 

这个代码正常工作

var myArray = [{id: "201158", salary: 2},{id: "1627761", salary: 5}];

myArray = myArray.filter(function( obj ) {
   return obj.id !== '1627761';
});

console.log(myArray);