【发布时间】:2019-06-06 17:04:39
【问题描述】:
我有一个看起来像这样的对象:
var obj = {
"array1": [
{"label": "something1", "ref": "option2a"},
{"label": "something2", "ref": "option2b"},
{"label": "something3", "ref": "option2a"},
{"label": "something4", "ref": "option2a"},
{"label": "something5 is the longest", "ref": "option2a"}
],
array2: [
"arrayItem1",
"array Item 2"
]
}
此对象包含对象数组和字符串数组。我想遍历每个具有标签的对象并返回最长的标签。在前面的示例中,预期的输出 id:
"something5 is the longest".
我尝试了以下方法:
function getLongest(object, key) {
return Object.values(object).reduce((l, v) => {
if (object.hasOwnProperty(key)) {
if (key in v)
return Math.max(l, v[key].length);
if (v && typeof v === 'object')
return Math.max(l, getLongest(v, key));
return l;
}
}, 0);
}
但是这给了我一个错误,因为它找不到 label 的属性 array2 中的项目。
【问题讨论】:
-
@Mandalina,'array1' 和 'array2' 是否要相互比较?分别地?还是只有带有“标签”键的数组(例如 'array1')?
-
嘿@SunnyPatel 是的,我只需要获取带有“标签”键的数组;像array1。
标签: javascript jquery arrays