2

数百個の JSON オブジェクトの配列があります...

var self.collection = [Object, Object, Object, Object, Object, Object…]

それぞれこんな感じ…

0: Object
   id: "25093712"
   name: "John Haberstich"

配列を反復処理して、各 Array.id を検索し、2 番目の配列内のいずれかの ID と一致するかどうかを確認しています...

   var fbContactIDs = ["1072980313", "2502342", "2509374", "2524864", "2531941"] 

   $.each(self.collection, function(index, k) {
        if (fbContactIDs.indexOf(k.id) > -1) {
            self.collection.splice(index, 1);
        };
    });

ただし、このコードは、self.collection 配列から 3 つのオブジェクトをスプライスするためにのみ機能し、その後、壊れて次のエラーが発生します。

Uncaught TypeError: Cannot read property 'id' of undefined 

エラーの原因となっている行はこれです...

if (fbContactIDs.indexOf(k.id) > -1) {

ここで私が間違っていることを誰か教えてもらえますか?

4

2 に答える 2

6

まとめる長さが変わるので、後ろから前にループさせるのがコツ

for (var index = self.collection.length - 1; index >= 0; index--) {
    k = self.collection[index];
    if (fbContactIDs.indexOf(k.id) > -1) {
        self.collection.splice(index, 1);
    };
}
于 2013-08-15T20:04:18.840 に答える