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"}] 在这里,我搜索字符串以获取要删除的正确元素: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
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和说明。可能应该添加一个数量属性。我继续并用可能的解决方案更新了我的答案。。。