2017-08-19 9 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); 
を正常に動作しています
関連する問題