2016-07-05 14 views
0

を使用して配列からオブジェクトを削除:...私は次の配列を持っている場合はおそらく初心者から非常に明白な疑問つの値

var arr = 
    [ 
    {id: 1, item: "something", description: "something something"}, 
    {id: 2, item: "something else", description: "something different"}, 
    {id: 3, item: "something more", description: "more than something"} 
    ] 

を...と特定を削除したいです(対応するIDを指定したdiv要素をクリックすることで、この場合には)IDに呼び出すことで、その内のオブジェクト...

var thisItem = $(this).attr("id"); 

...私はarr[i]と0123に合わせて、forループを使用せずにこれを行うことができます?そしてもしそうなら、どうですか?私は大きな配列を持っているので、for-loopを走らせることは非常に重いと思われます。

ありがとうございます!

+0

最新ブラウザのために[ 'arr.splice(arr.findIndex(O => o.id === 2)、1);'](HTTPS: //jsfiddle.net/54mLn6m3/) – Tushar

答えて

1

あなたは、あなたが任意の配列をフィルタリングするためArray.filterを使用することができますjQueryのgrep

arr = jQuery.grep(arr, function(value) { 
    return value.id != id; 
}); 
+0

これも完全に動作します。ありがとう! – dedaumiersmith

2

を使用することができます。このメソッドは、引数としてフィルタリング関数をとり、元の配列のすべての要素でフィルタ関数を実行します。この関数の戻り値がfalseの場合、その要素は返された新しい配列から除外されます。元の配列は影響を受けません。

var arr = 
    [ 
    {id: 1, item: "something", description: "something something"}, 
    {id: 2, item: "something else", description: "something different"}, 
    {id: 3, item: "something more", description: "more than something"} 
    ]; 

function filterArray(id){ 
    return arr.filter(function(item){ 
    return item.id != id; 
    });//filter 
}//filterArray() 

console.log(filterArray(2)); 
+0

'array.filter'は行く方法です – webdeb

+0

素晴らしいです。ありがとうございました! – dedaumiersmith

0

プレーンJSソリューション:

var arr = [{ 
    id: 1, 
    item: "something", 
    description: "something something" 
}, { 
    id: 2, 
    item: "something else", 
    description: "something different" 
}, { 
    id: 3, 
    item: "something more", 
    description: "more than something" 
}]; 

var filtered = filterArrayByElemId(arr, 2); 
console.log(filtered); 

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