如何在修改数组后从数组中删除元素

时间:2014-05-13 21:37:23

标签: javascript arrays json

最近在我的申请中,我遇到了来自javascript的 splice()的问题,我告诉你原因。

场景:用户可以将产品添加到阵列(购物车),并将所有产品存储在json对象数组中。如果用户想要使用“splice(index,1)”删除特定产品,则删除具有要从数组中删除的指定索引的元素。

编辑:例如我有这个数组

Products: [{ID: 1, Product: Cake, Qty: 2},{ID:2, Product: Donut, Qty: 1}]

因此在数组中有索引[0]和索引[1]。当我使用splice()从index [0](哪里是Cake)中删除元素时,它不会删除元素,有时它会删除,我不知道为什么。这是从数组中删除元素的功能

function DeleteProduct(indexArray) {
//index array is send from $.each function I have to print the elements of the array
        ShoppingCart.ShoppingCartItems.splice(indexArray, 1);

        //Im removing the <tr> tag from a table, and the index help me to do it and everything here is fine
        $("#tr" + indexArray).remove();


        $.each(ShoppingCart.ShoppingCartItems, function (index, Products) {
            //After splice I will have the option to recalculate the total of the purchase
            var Total = Number(Products.Precio) * Number(Products.Cantidad);

        });
      }

但出于某种原因,如果我尝试从数组中删除数量大于1的元素(在函数AddItem()的代码之后),它“删除”该元素但它仍然显示为现存(甚至如果数量更新后我只有一个元素

很抱歉这个错误的解释,我不是母语为英语的人,所以我很难更好地解释它。 编辑我简化了我的问题,希望得到这个帮助。

EDIT2:我认为问题是splice()之后索引的顺序。我没有意识到每次拼接后索引都会改变,但是我将输出保持为相同,所以有时候我试图删除超出范围的索引o不存在。我的错。 感谢您的帮助,对不起我的糟糕问题。我会尝试改进

1 个答案:

答案 0 :(得分:0)

请参阅:

// Your array

> x = [{ID: 1, Product: 'Cake', Qty: 2},{ID:2, Product: 'Donut', Qty: 1}]
=> [Object, Object]


// I remove the first element

> x.shift()
=> Object {ID: 1, Product: "Cake", Qty: 2}


// I "print" the array with the first element removed
> x
[ Object
  ID: 2
  Product: "Donut"
  Qty: 1
  __proto__: Object
]

我在Chrome控制台中这样做了,这就是你问的问题吗?