1

phonegap アプリケーションがあり、ダウンロードする前に画像を削除したいと考えています。私はJSONオブジェクトを自分の関数に渡しています

[{"name":"aaa.jpg","link":"https:\/\/www.abc.com\/aaa.jpg"},"name":"bbb.jpg","link":"https:\/\/www.abc.com\/\/bbb.jpg"}]

そして、次の関数を使用して解析および削除します

function prunePictures(pictures) {
    for ( var i = 0; i < entries.length; ++i) {
            var name = entries[i].name;
            $.each(pictures, function(i, obj) {
                if (obj.name == name) {
                    delete pictures[i];
                }
            });
     }
}

しかし、ループを通過せず、「未定義のプロパティ '名前'を読み取れません」というエラーが表示されます

4

2 に答える 2

2

...画像オブジェクトを削除したくない場合。配列からスプライスしたい。

削除すると配列に穴が残りますが、結合すると穴が削除されます。

var l = entries.length, i = 0, pictureName;

for (; i < l; i += 1) {
    pictureName = entries[i].name;
    pictures.forEach(function (picture, i, arr) {
        if (pictureName === picture.name) { arr.splice(i, 1); }
    });
}

nameエンティティ内のオブジェクトが同じプロパティを持つ場合、画像内のオブジェクトを削除します。

于 2012-09-12T00:49:23.533 に答える
0

json 文字列に中かっこがありません:

[{"name":"aaa.jpg","link":"https:\/\/www.abc.com\/aaa.jpg"},{"name":"bbb.jpg","link":"https:\/\/www.abc.com\/\/bbb.jpg"}]

編集

それはあなたが得るエラーではないので、あなたのjsonにタイプミスがあったと思います。

$.each使用する代わりに a から削除しないでください$.grep

ここで情報を見る

pictures = $.grep(pictures, function(obj,i) {
    if (obj.name == name) {
        return false;
    }
    return true;
});
于 2012-09-12T00:40:57.653 に答える