Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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 删除数组中的JSON对象,如果该对象具有键值对,其中值为&引用;_Javascript_Arrays_Json_Javascript Objects - Fatal编程技术网

Javascript 删除数组中的JSON对象,如果该对象具有键值对,其中值为&引用;

Javascript 删除数组中的JSON对象,如果该对象具有键值对,其中值为&引用;,javascript,arrays,json,javascript-objects,Javascript,Arrays,Json,Javascript Objects,如果对象中某个键的值为“”,如何删除该键-值对所在的对象 例如,JSON文件中的(“名称”:“”) 就我个人而言,我不明白为什么前两个对象会被擦除,而最后一个不会被擦除。 我想这与“”有关,但我不知道为什么 [ {"name":{},"mail":{},"msg":{},"timestamp":1575240647577,"_id":"9ZCckYie9I3XUmKC"}, {"name":"james smith","mail":"jamessmith@gmail.com","ms

如果对象中某个键的值为“”,如何删除该键-值对所在的对象
例如,JSON文件中的(“名称”:“”) 就我个人而言,我不明白为什么前两个对象会被擦除,而最后一个不会被擦除。
我想这与“”有关,但我不知道为什么

[
 {"name":{},"mail":{},"msg":{},"timestamp":1575240647577,"_id":"9ZCckYie9I3XUmKC"},
 {"name":"james 
   smith","mail":"jamessmith@gmail.com","msg":"hi","timestamp":1575241232158,"_id":"fVWl1bufhCYb9rcQ"},
{"location":"Miami","timestamp":1575240647577,"_id":"9ZCckYie9I3XUmKC"},

 {"name":"","mail":"","msg":"","timestamp":1575240990509,"_id":"AzePVvAbc0ZQgJe9"}
]

编辑:对不起,我没有正确解释我的问题。我的意思是询问如何删除整个对象本身的指导。

可能是因为您同时对正在编辑的集合进行了迭代

而是使用
过滤器
方法:

const withLocation = data.filter(x => "location" in x && x.location !== "")

这与循环的运行方式有关

在循环的第一次迭代中,索引为0,因此数组中的第一项将被删除

在数组的第二次迭代中,索引为1,因此最后一项被删除(因为此时数组中只剩下2项)


由于最后一个项目已被删除,因此没有更多项目可循环。

您的问题不清楚

如果您只想删除JSON中的元素,只需使用delete=>

示例代码

让xyz={“名称”:“”
,“邮件”:
“msg”:”
,“时间戳”:1575240990509
,“_id”:“AzePVvAbc0ZQgJe9”
} 
对于(让elm在xyz中){
如果(xyz[elm]='')删除xyz[elm];
}

log(xyz)
我认为最好的方法就是这样

const arrayWithLocation = data.filter(x => x.location)

const arrayWithoutLocation = data.filter(x => !x.location)

索引在for…of循环中更改。它是为每个单独的对象建立索引,这样我就可以对数据进行切片。这实际上是一个JSON文件还是一个数据库调用?您说的是JSON文件,但函数名是
databaseQuery()
。这很奇怪,因为数据有两种不同的表示形式;一个字符串和一个对象<代码>名称:{}
名称:“詹姆斯·史密斯”
“”
是一个完全可以接受的值,因此如果数据库中有这样的值,那么您将得到它。下次询问如何从数组中删除对象。你的问题一点也不清楚。这个问题中的
异步函数databaseQuery(){…
是什么部分?
const arrayWithLocation = data.filter(x => x.location)

const arrayWithoutLocation = data.filter(x => !x.location)