-3

我有一个数组:

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
                });

现在我想删除第二个项目(即 order: menu_items.length + 1, // value =2 and title: 'grid')

我怎样才能删除这个项目??

4

6 回答 6

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' });
于 2013-02-12T13:30:56.567 回答
1

你可以用splice()这个。

menu_items.splice(1, 1);

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

于 2013-02-12T13:33:54.097 回答
0

If you want to remove an item by title, I'd suggest doing something like this:

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;
        }
    }
}

Then, you can just call the function:

deleteItemByTitle(myArray, "grid");

Replace title with order, if you want that to be the property to search for.

于 2013-02-12T13:37:35.333 回答
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,然后只是改变orderIdorderTitle任何你喜欢的东西。

于 2013-02-12T13:40:04.513 回答
0

您可以使用splice()方法。

于 2013-02-12T13:31:48.187 回答
0

使用此代码

delete Your_items[1];
于 2013-02-12T13:32:48.480 回答