2016-09-29 11 views
0

2つの配列があります。プロパティに基づいてオブジェクトを削除する

_ARRAY_OF_FUTURE_USERS = []; // Array of objects with a property useruid 
pastLikedUsersArray = []; // Array of strings 

私は、オブジェクトの一つがpastLikedUsersArray文字列であるプロパティ値を持つ場合_ARRAY_OF_FUTURE_USERSからオブジェクトを削除したいです。

Iは反復両方の配列の長さにわたり、以下、このスプライス法ことループを持っています。

_ARRAY_OF_FUTURE_USERS.splice(pastLikedUsersArray[j], 1); 

しかし、オブジェクトを文字列と比較しているため、削除しないと思います。私は何をしたいのですか?

私も試してみました:

_ARRAY_OF_FUTURE_USERS[i].useruid.splice(pastLikedUsersArray[j], 1); 

これは

useruidを動作しませんでしたが_ARRAY_OF_FUTURE_USERSのプロパティの一つであり、値が文字列である、の同類は、他のアレイである可能性があります。 私はそれが機能ではないというエラーを受けました。

は実際には、より多くの掘削後に、1ではなく

+0

スプライスの最初の引数は、要素のインデックスでなければなりません – jcubic

答えて

0

はこれを試して非常に奇妙で正しいものを削除されて表示されます。

for (var i=0; i<_ARRAY_OF_FUTURE_USERS.length; i++) { 
    if (pastLikedUsersArray.indexOf(_ARRAY_OF_FUTURE_USERS[i].useruid) != -1) { 
     _ARRAY_OF_FUTURE_USERS.splice(i, 1); 
     i--; 
    } 
} 

または使用してフィルタ:

_ARRAY_OF_FUTURE_USERS = _ARRAY_OF_FUTURE_USERS.filter(function(user) { 
    return pastLikedUsersArray.indexOf(user.useruid) != -1; 
}); 
+0

これは有望そうです。どちらの部分が削除されたのかをconsole.logで確認する必要がありますか? –

+0

最初のものでは、 'console.log(_ARRAY_OF_FUTURE_USERS [i])'を2番目に ''あなたは見ていないと思いますが、前に '' console.log(_ARRAY_OF_FUTURE_USERS.slice()) 'フィルターをはずして差を確認してください。 – jcubic

+0

乾杯!治療をする –

関連する問題