从javascript对象中删除一行

Pra*_*ngh 0 javascript delete-row javascript-objects

我有一个 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"}];
Run Code Online (Sandbox Code Playgroud)

现在,我必须删除具有 id 值的对象中的所有行2。如何才能做到这一点 ?

Ian*_*Ian 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));
Run Code Online (Sandbox Code Playgroud)

它不会创建新数组,只是在原地修改原始数组。如果您需要原始数组及其所有项目,请使用其他解决方案之一,返回原始数组的修改副本。

  • @PrashantSingh 它需要 3 个参数(只有我们担心的前 2 个)。第一个参数是开始删除项目的索引,第二个参数是要删除的项目数量。我只是将它设置为 `1` 因为我们只想删除循环中的单个项目(它的 `id` 是 `2`) (2认同)