Ear*_*rlz 9 javascript arrays json
我正在尝试解析发送给我的一些JSON,它的格式都是
[{key:value},{key2:value2}, ... ]
Run Code Online (Sandbox Code Playgroud)
获得此价值的最佳方法是key2什么?有没有办法在不进行for循环的情况下完成它?
小智 7
Javascript Array 附带的方法可以满足您的要求 - 无需编写 for 循环即可查找条目。
你为他们提供你想要的条件。一种紧凑且方便的方法是使用箭头(或“lambda”)函数。在您的情况下,您正在寻找具有特定键的数组条目,因此箭头函数可能如下所示:
e => e.hasOwnProperty("key2")
Run Code Online (Sandbox Code Playgroud)
跟随其他一些人的带领,让我们从假设开始
var arr = [{key:"value"}, {key2:"value2"}, {key3:"value3"}]
Run Code Online (Sandbox Code Playgroud)
如果您期望数组中最多有一个成员拥有您想要的键,则可以使用该find()函数。它将测试每个数组成员,直到找到满足条件的成员,然后将其返回。如果没有一个是真的,你会得到undefined.
var foundentry = arr.find(e => e.hasOwnProperty("key2"))
Run Code Online (Sandbox Code Playgroud)
要么foundentry将是undefined,要么它将是{key2:"value2"}您正在寻找的内容,并且可以value2从中提取。
如果arr可以有多个包含您正在查找的密钥的条目,则不要find()使用filter(). 它返回一系列符合您条件的条目。
var foundarray = arr.filter(e => e.hasOwnProperty("key2"))
Run Code Online (Sandbox Code Playgroud)
不是真的,但创建一个功能并不难.但是,它确实涉及一个for循环.
为了完成,这将是功能:
function selectWhere(data, propertyName) {
for (var i = 0; i < data.length; i++) {
if (data[i][propertyName] !== null) return data[i][propertyName];
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
用法:
var key2value = selectWhere(data, "key2");
Run Code Online (Sandbox Code Playgroud)