Jquery 在对象中查找json元素并将其删除

Jquery 在对象中查找json元素并将其删除,jquery,json,Jquery,Json,使用jquery,我将如何查找JSON对象的索引 以下是创建的内容: [{"itemid":3,"itemName":"Some text here","itemPrice":"£2.40"},{"itemid":3,"itemName":"Some text here","itemPrice":"£2.40"},{"itemid":2,"itemName":"Some text here","itemPrice":"£2.40"}] 在这里,我搜索字符串以获取要删除的正确元素: var ite

使用jquery,我将如何查找JSON对象的索引

以下是创建的内容:

[{"itemid":3,"itemName":"Some text here","itemPrice":"£2.40"},{"itemid":3,"itemName":"Some text here","itemPrice":"£2.40"},{"itemid":2,"itemName":"Some text here","itemPrice":"£2.40"}] 在这里,我搜索字符串以获取要删除的正确元素:

var itemid = ($(this).text());
console.log(cOrder);
$.each(cOrder, function(key, value) {
    if(value.itemid == itemid) {
    // Here i need to get the index of the object //
    console.log(Object.keys(cOrder).indexOf(this));
    }
});
将以上内容作为工作示例。如果我想删除itemid3,我需要删除对象索引1(1:object)

如何获取索引1,然后将其从字符串中删除


提前感谢使用数组,您不能在循环中从数组的开头开始并删除项。。。如果这样做,循环计数器和索引将彼此分离。在循环期间,您可能需要创建第二个数组并将有效项添加到辅助数组

与id匹配的项目:

var validItems = [];
$.each(cOrder, function(key, value) {
    if(value.itemid == itemid) {
        validItems.push(value);
    }
});
var validItems = [];
$.each(cOrder, function(key, value) {
    if(value.itemid != itemid) {
        validItems.push(value);
    }
});
与id不匹配的项目:

var validItems = [];
$.each(cOrder, function(key, value) {
    if(value.itemid == itemid) {
        validItems.push(value);
    }
});
var validItems = [];
$.each(cOrder, function(key, value) {
    if(value.itemid != itemid) {
        validItems.push(value);
    }
});
或两者兼而有之:

var validItems = [];
var invalidItems = [];
$.each(cOrder, function(key, value) {
    if(value.itemid == itemid) 
        validItems.push(value);
    else
        invalidItems.push(value);
});
更新

这可能有助于您的数量问题。您必须向对象添加
itemQuantity
属性才能支持此操作。使用该属性,您可以创建如下函数:

//quantity can be positive or negative
function adjustItemQuantity(itemId, quantity, remove) {
    //if no quantity, or quantity==0, and not remove then nothing to do here
    if (!quantity && !remove) return;

    //create the temporary array
    var validItems = [];

    $.each(cOrder, function(key, value) {
        if(value.itemid == itemId) {
            var newQuantity = value.itemQuantity + quantity;

            //remove if quantity 0 or less
            if (newQuantity > 0 && !remove)
                validItems.push(value);
        } else {
            //add the other, non-matching items to the array
            validItems.push(value);
        }
    });

    //set the main array to the new result
    cOrder = validItems;
}

不是
var itemid=($(this.text())制作
itemid
字符串?并使用
if(value.itemid==itemid){
你在比较一个整数和一个字符串?JavaScript类型的比较有时会让我感到困惑…我不确定是否诚实。当我查找itemid时,它会触发一个true IF语句。很好,我根本没有想过要这么做。谢谢你,伙计。这有一个逻辑问题,如果这个人订购了几个相同的项(即相同的itemid)并删除所有项而不是一项。正在尝试确定最佳方法是什么?因此混合中也有一个数量变量。您的对象已经有名称、id和说明。可能应该添加一个数量属性。我继续并用可能的解决方案更新了我的答案。。。