Javascript jQuery删除数组索引
在jQuery中从数组中删除/删除项时遇到问题。我在console.log()中运行了结果,结果显示为一个对象。我创建了一个函数,返回一个json字符串,然后对其进行解析,如下示例:Javascript jQuery删除数组索引,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,在jQuery中从数组中删除/删除项时遇到问题。我在console.log()中运行了结果,结果显示为一个对象。我创建了一个函数,返回一个json字符串,然后对其进行解析,如下示例: var ret = jQuery.parseJSON($.return_json(data)); 它工作得很好,但是,我正在运行一个$。每个循环都会从该数组/对象中删除项 var old = $("element").find("li[rel=item]"); $.each(old, function(index
var ret = jQuery.parseJSON($.return_json(data));
它工作得很好,但是,我正在运行一个$。每个循环都会从该数组/对象中删除项
var old = $("element").find("li[rel=item]");
$.each(old, function(index, value) {
ret.splice($(value).attr("id"), 1);
});
在上面,我正在搜索属性为rel=item
的元素。同一元素包含一个id
,该id与返回json解析变量的函数的索引相关
我在Google Chrome中运行开发人员工具查看错误,并打印:
Uncaught TypeError: Object #<Object> has no method 'splice'
uncaughttypeerror:对象#没有方法“splice”
任何指导的话都将不胜感激。谢谢。ret是包含数组的JSON对象,您不能拼接它。你需要引用你在对象中调用的数组并拼接它
(如果您将代码发布到定义数组的位置,会有所帮助)。splice
只是数组的一种方法,而不是对象ret
在本例中,是一个对象,而不是数组
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]);
}
}
如果要从对象中删除特定元素,可以执行以下操作:
$("element").find("li[rel=item]").each(function(i,v){
delete ret[v.id];
});
另外,您可以使用代替
如果你真的想把这个对象做成一个数组,你可以简单地通过它循环并把元素推到一个数组中
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
实际上不是一个数组(很可能是一个对象(例如:{someName:“someVal”}
)
我还假设,$(value).attr(“id”)
是一个字符串标识符,就像上面的对象示例中的someName
。如果是这种情况,并且您正在处理一个对象,并且您确实拥有相应的属性标识符,那么幸运的是,有一个比splice
更容易解决的问题
尝试:
啊,我打字的时候就是我。实际上是jQuery.parseJSON
。只要查看错误就意味着在ret上不存在splice方法。如果ret不是数组,这是正确的。我仍然不明白你想做什么。可以提供示例数据以及您希望输出的内容。对象中没有数组。未分析它看起来像这样{“1”:“第1项”、“第2项”:“第2项”、“第3项”:“第3项”}
。我不明白你说你在从数组拼接时遇到问题,但实际上它不是数组?如果它不是数组或字符串,则无法拼接。是的,它是对象。如何使其成为数组?@Aleks:循环遍历元素并使其成为数组。类似于for(x in obj){arr.push(obj[x])}
JSON对象可以包含数组,可以发布函数吗?有转换方法吗jQuery.makeArray()
没有帮助。您想对对象(或数组)做什么?删除特定元素?从ret
中删除项目。我想将ret
作为一个数组,这样我就可以使用splice
通过索引删除项。@Aleks:如果要将对象做成数组,可以循环对象并将其值放入数组中。另外建议。。。虽然它可能不适用,但我不会使用讨论过的json结构。如果您的键实际上是“1”、“2”、“3”,那么将数据结构化为真正的数组[“item 1”、“item 2”、“item 3”]
也是正确的json,可能更有意义。html id也应该以字母开头;如果只是一个数值,则无效。谢谢提示。注意:数据删除应该有效,但是您可以始终ret[$(this).attr(“id”)]=null
只清除值。尝试console.log($(this.attr(“id”))代码>以确保值是您认为期望的值。