2017-08-31 16 views
-1

オブジェクトがオブジェクトの配列内にあるかどうかをテストします。このために、私はunderscorejsと.whereメソッドを使用します。しかし、私のテストでは動作しません:アンダースコアのオブジェクトの配列内のオブジェクトを削除します

console.log(array); 
console.log(object); 
console.log(_.where(array, object).length); // return 0 

私は理解していない理由は、私の物は私のアレイで2番目のインデックスにあるため。

私はObject.is(array[2], newCanvasでテストしようとしましたが、falseも返します。

誰でも知っていますか?

コミュニティありがとうございます!あなたのIDを仮定

enter image description here

答えて

0

あなたはかなり簡単にこのためにバニラJSを使用することができます(それが表示される)ユニークです:

array.findIndex(x => x.id === object.id)

それはそれを見つけた場合、これはオブジェクトのインデックスを返します。オブジェクトが配列内に存在しない場合は-1です。

それはあなたが欲しいものだ場合は、実際には1回のショットでこれを削除できます。

array = array.filter(x => x.id !== object.id);

またはわずかに長いバージョン:

var indexOfMyObject = array.findIndex(x => x.id === object.id); 

if (indexOfMyObject > -1) 
    array.splice(indexOfMyObject, 1); 
+0

を申し訳ありませんが、IDの私のメッセージを編集:それは2を返します。私の配列からオブジェクトを削除するためにアンダースコアを使用できますか? –

+0

もちろん、バニラJSでもそうすることができます: 'array.splice(2、1)' - 2を、以前に見つかったインデックスを含む変数に置き換えます。 – UncleDave

関連する問題