2016-03-24 13 views
1

targetオブジェクトの属性が配列に存在する場合、配列からすべての要素を削除する方法があります。javascriptの配列から項目をスプライスする方法

var msg={name:'tar', type:'SR'}; //want to delete all object with type=SR 

    var items= [{name:'oh', type:'SR'},{name:'em', type:'PR'}, 
    {name:'ge', type:'MR'},{name:'ohoo', type:'SR'}]; 

    items.splice(items.indexOf(msg.type), 1); 

こうして、1つのオブジェクトだけが削除されます。誰かがループを使用せずに、私は、アレイからのすべてのターゲットオブジェクトを削除することができ、より良い方法を提案することができます

+0

少なくとも1つのオブジェクトに特定の値を持つ特定のプロパティが含まれている場合、または特定の値を持つ特定のプロパティを持つオブジェクトのみを削除しようとしている場合、配列からすべての要素を削除しようとしていますか? – Xufox

+1

あなたのコードは、最後のものを除くすべてのオブジェクトを削除しています。 'items.indexOf(msg.type)' '' 'SR ''の値を探す '' indexOf''を返します。 – Hacketo

+0

私はこれらのオブジェクトをすべて削除しようとしています。タイプ: 'SR'。 –

答えて

7

あなたは

items = items.filter(function(item){ 
    return item.type !== msg.type; 
}); 
2

機能のビットを、次のような何かを試すことができますし、それが行われています:

var result = items.filter(function(item){ 
    return (item.type == msg.type) ? false : true; 
}); 
関連する問題