0

次のようなJavaScriptオブジェクトがあります:-

var myObject = [{"id": "1", "URL": "http://shsudhf.com", "value": "1"}, 

                {"id": "2", "URL": "http://shsusadhf.com", "value": "2"},

                {"id": "3", "URL": "http://shsudsdff.com", "value": "0"}];

ここで、id 値を持つオブジェクト内のすべての行を削除する必要があります2。これはどのように行うことができますか?

4

5 に答える 5

5

行を「削除」した後に元の配列が必要ない場合は、次のspliceように使用できます。

http://jsfiddle.net/rmcu5/1/

var myArray = [{"id": "1", "URL": "http://shsudhf.com", "value": "1"},
                {"id": "2", "URL": "http://shsusadhf.com", "value": "2"},
                {"id": "3", "URL": "http://shsudsdff.com", "value": "0"}];

function removeItemsById(arr, id) {
    var i = arr.length;
    if (i) {   // (not 0)
        while (--i) {
            var cur = arr[i];
            if (cur.id == id) {
                arr.splice(i, 1);
            }
        }
    }
}

removeItemsById(myArray, "2");

console.log(JSON.stringify(myArray));

新しい配列を作成するのではなく、元の配列を変更するだけです。元の配列とそのすべてのアイテムが必要な場合は、元の配列の変更されたコピーを返す他のソリューションの1つを使用してください。

于 2012-12-12T07:06:54.877 に答える
3

呼び出すものmyObjectは実際には配列であるため、配列メソッドを使用できることに注意してください。

myObject = myObject.filter(function( obj ) {
  return obj.id != 2;
});

デモ: http://jsfiddle.net/elclanrs/LXpYj/

于 2012-12-12T06:58:02.087 に答える
2

これを試して:

function deleteObject(array,id)
{
 var newObject=[]; 
  for (var o in array) {
       if(array[o].id!=id)
          newObject.push(array[o]);
    }
return newObject;
}

ワーキングJSフィドル

新しい配列を作成せずに行うことができます。削除関数を記述する必要があります。

Array.prototype.remove = function() {
    var what, a = arguments, L = a.length, ax;
    while (L && this.length) {
        what = a[--L];
        while ((ax = this.indexOf(what)) !== -1) {
            this.splice(ax, 1);
        }
    }
    return this;
};

新しい配列削除オブジェクトなし

于 2012-12-12T06:55:56.693 に答える
0

フィルタで試してみてください(オブジェクトではなく配列です)

var rr = [{"id": "1", "URL": "http://shsudhf.com", "value": "1"},  {"id": "2", "URL": "http://shsusadhf.com", "value": "2"}, {"id": "3", "URL": "http://shsudsdff.com", "value": "0"}];


rr = rr.filter(function(e) {
    return e.id != 2;
});
于 2012-12-12T07:15:40.690 に答える
-1

ほら、これは配列などを再作成することなくです。

 var myObject = [{"id": "1", "URL": "http://shsudhf.com", "value": "1"}, 

                {"id": "2", "URL": "http://shsusadhf.com", "value": "2"},

    {"id": "3", "URL": "http://shsudsdff.com", "value": "0"}];

for(i=0,iMax=myObject.length;i<iMax;i++){
    (function (a) { 
        if(this.id=="2"){
          delete myObject[a];
        }
    }).call(myObject[i],i);
}

console.log(myObject);
​
​

jsフィドル

http://jsfiddle.net/gG2zz/1/

于 2012-12-12T07:00:28.230 に答える