如何解决如何使用reduce从具有对象数组的对象数组中找到最大值
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",value: 3}]}
];
findDataMax(arr);
console.log(max);
解决方法
我更愿意为此使用reduce以外的其他方法,但如果必须,则可以将累加器设置为-Infinity
开始(这样与累加器相比的任何值都将大于-Infinity
)。对于数组中的每个对象,您可以通过将 values
数组映射到每个对象的 value
数字数组,然后将这些数字 spreading 调用到 { {3}}。然后,您可以比较这是否大于当前最大值,如果是,则将其作为新值返回以用作累加器,否则,使用旧的累加器值:
const arr = [ {key: "a",values : [{ key: "aa",value: 2},{ key: "bb",value: 5}]},{key: "b",values : [{ key: "cc",value: 7},{ key: "dd",value: 3}]} ];
const max = arr.reduce((max,{values}) => {
const newMax = Math.max(...values.map(({value}) => value));
return newMax > max ? newMax : max;
},-Infinity);
console.log(max);
如前所述,我可能会对 .reduce()
使用不同的方法,例如 Math.max()
来获取所有对象 value
的编号,然后您可以将其传播到对 {{ 1}}:
Math.max()
我不知道使用 patternHTTPMethod = re.compile(r'([D]\w+\s/\w+)')
lstHTTPMethodDel=[]
for line in fstring:
match = patternHTTPMethod.search(line)
if match:
lstHTTPMethodDel.append(match[0])
print(lstHTTPMethodDel)
函数是否是解决此问题的一个干净的解决方案,但您可以在这里找到:
reduce
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。