Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery删除数组索引_Javascript_Jquery_Arrays_Json - Fatal编程技术网

Javascript jQuery删除数组索引

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

在jQuery中从数组中删除/删除项时遇到问题。我在console.log()中运行了结果,结果显示为一个对象。我创建了一个函数,返回一个json字符串,然后对其进行解析,如下示例:

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”))以确保值是您认为期望的值。