【发布时间】:2021-03-08 13:34:02
【问题描述】:
如果我有以下情况
arr = [
{key: "a",
values : [{key: "aa", value: 2}, {key: "bb", value: 5}]},
{key: "b",
values : [{key: "cc", value: 7}, {key: "dd", value: 3}]}
]
如何在javascript中使用reduce从嵌套对象中找到最大值?在上述情况下,答案应该是 7。
我目前可以使用循环来实现:
let max = 0;
let findDataMax = function(d) {
for (let i = 0; i < d.length; i++) {
let currArr = d[i].values;
let tempArr = []
currArr.forEach((d) => tempArr.push(+d.value));
if (Math.max(...tempArr) > max) {
max = Math.max(...tempArr);
}
}
}
let arr = [
{key: "a", values : [{key: "aa", value: 2}, {key: "bb", value: 5}]},
{key: "b",values : [{key: "cc", value: 7}, {key: "dd", value: 3}]}
];
findDataMax(arr);
console.log(max);
【问题讨论】:
-
你必须为此使用reduce吗?
-
是的,如果可以的话,我会这样做。否则我能够遍历所有内容并找到最大值。
-
您能否展示一下您的循环方法/到目前为止您尝试过什么?
-
你也能显示预期的输出吗?
-
这会找到一个元素的最大值。如果我再循环一次,我可以找到全局最大值。此代码找到局部最大值
let max = 0; let findDataMax = function (d) { for (let i = 0; i < d.length; i++) { let currArr = d[i].values; let tempArr = [] currArr.forEach((d) => tempArr.push(+d.value)); if (Math.max(...tempArr) > max) { max = Math.max(...tempArr); } } }
标签: javascript reduce