2017-08-19 128 views
0
(2) [{…}, {…}] 
0: {id: "201158", salary: 2} 
1: {id: "1627761", salary: 5} 
length:2 
__proto__: Array(0) 

上面是我的控制檯對象。我在這裏畫了一個空白的東西。點擊時,我試圖通過id的值去除元素。刪除對象陣列條目

因此,例如,如果在div點擊具有 id和薪水將從該數組中刪除的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

由於該函數返回一個新的過濾數組,因此需要將其分配回變量。即:

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

無論出於何種原因,如果你不想這樣做,並希望更新傳遞給函數的數組,你將不得不直接從該數組中刪除的項目,而不是返回一個新的。

例如

function removeFunction(myObjects, prop, valu) { 
    for (let i = myObjects.length - 1; i >= 0; i--) { 
    if (myObjects[i][prop] === valu) 
     myObjects.splice(i, 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);