如何在jquery中删除数组中的项?

时间:2013-02-12 13:30:07

标签: javascript jquery

我有一个数组:

var menu_items = [];

我在其中推送两个元素:

 menu_items.push({
                    order: menu_items.length + 1, // value= 1
                    title: 'Label',
                    url: '',
                    IsSystemMenuItem: true
                });

 menu_items.push({
                    order: menu_items.length + 1, // value =2
                    title: 'grid',
                    url: '',
                    IsSystemMenuItem: true
                });

现在我要删除第二项(即顺序:menu_items.length + 1,// value = 2和title:'grid')

我该怎么删除这个项目?

6 个答案:

答案 0 :(得分:3)

使用delete删除项目:

delete menu_items[1];

但请注意,它会在您的阵列中留下一个洞。

如果您想要一个没有洞的数组,请使用splice

menu_items.splice(1, 1);

如果你想要的是根据属性删除元素,那么你可以使用filter

menu_items = menu_items.filter(function(v) { return v.title!='grid' });

如果您想要更兼容,并且在使用jQuery时,您也可以使用grep

menu_items = $.grep(menu_items, function(v) { return v.title!='grid' });

答案 1 :(得分:1)

您可以使用splice()

menu_items.splice(1, 1);

第一个参数是您要删除的元素的索引。第二个参数是您要删除的元素数。

答案 2 :(得分:0)

您可以使用splice()方法。

答案 3 :(得分:0)

使用此代码

delete Your_items[1];

答案 4 :(得分:0)

如果您想按标题删除项目,我建议您执行以下操作:

function deleteItemByTitle(array, title){
    for(var i = 0, l = array.length; i < l; i++){ // Loop through the array,
        if(array[i].title == title){              // If the correct element is found,
            array.splice(i, 1);                   // Remove the found element.
            break;
        }
    }
}

然后,您可以调用该函数:

deleteItemByTitle(myArray, "grid");

title替换为order,如果您希望将其作为要搜索的媒体资源。

答案 5 :(得分:0)

如果要根据订单号或类似名称删除。这是如何完成的基本示例:

function DeleteFromArray(orderId)
{
    for ( var i = 0; i < menu_items.length; i++)
    {
        if(menu_items[i].order === orderId) return menu_items.splice(i, 1);
    }
}

当然menu_items[i].order === orderId可以替换为menu_items[i].title === orderId之类的内容,然后只需将orderId更改为orderTitle或者您喜欢的任何浮动广告。