jQuery删除数组索引

jQuery delete array index

本文关键字:索引 数组 删除 jQuery      更新时间:2023-09-26

我有麻烦删除/从jQuery数组中移除一个项目。我在console.log()中运行了结果,它显示为一个对象。我创建了一个函数,它返回一个json字符串,然后我解析它,下面的例子:

var ret = jQuery.parseJSON($.return_json(data));

它工作得很好,但是,我正在运行一个$.each循环,从该数组/对象中删除项目。

var old = $("element").find("li[rel=item]");
$.each(old, function(index, value) {
    ret.splice($(value).attr("id"), 1);
});

上面,我正在搜索具有rel = item属性的元素。同一元素包含一个id,它与返回json解析变量的函数的索引相关。

我在谷歌浏览器中运行开发者工具查看错误,它打印:

Uncaught TypeError: Object #<Object> has no method 'splice'

任何指导性的话语将不胜感激。谢谢。

似乎ret实际上不是一个数组(而可能是一个对象(例如:{someName: "someVal"}))。

我还假设你的意思是$(value).attr("id")是一个字符串标识符,就像上面的对象示例中的someName一样。如果是这种情况,并且您正在处理一个对象,并且您确实有适当的属性标识符,那么幸运的是,有比splice更容易的解决方案。

试题:

$("element").find("li[rel=item]").each(function() {
    delete ret[$(this).attr("id")];
});

splice只是数组的方法,不是对象的方法。在本例中,ret是一个对象,而不是一个数组。

如果你想从一个对象中删除特定的元素,你可以这样做:

$("element").find("li[rel=item]").each(function(i,v){
   delete ret[v.id];
});

p。您可以使用.each代替$.each

如果你真的想把对象变成数组,你可以简单地遍历它并把元素压入数组。

var obj = {"1":"item 1", "2": "item 2", "3": "Item 3"};
var arr = [];
for(i in obj){
  if(obj.hasOwnProperty(i)){
    arr.push(obj[i]);
  }
}

ret是包含数组的JSON对象,您不能拼接它。你需要在对象中引用你所调用的数组,并将其拼接。

(如果你张贴你定义数组的代码会有帮助)。