javascript - 如何使用reduce 测试数组的Math.max 函数

标签 javascript arrays range max reduce

我有一个由 range(i, (i + j)) 函数生成的数组,该函数使用两个计数器 i 和 j。 range 函数可以很好地生成 [3, 4, 5, 6] 类型的数组

生成此数组后,我想指向另一个名为 y 的数组中的对象 3、4、5 和 6。

在每个指向的对象中,我想要其值的键称为“权重”。

我想使用 Math.max 返回权重最大的那个。

有人可以帮助我吗,我是 JavaScript 新手,对此不太擅长。

谢谢。

我尝试了以下代码,但出现错误

var m = Math.min(   (   y[range(i, (i + j))].weight   )
)
console.log(m)

给出的错误是“无法读取未定义的属性‘权重’”。这是因为 range 函数返回一个我想要测试的数字数组,因此它尝试将其处理为:

var m = Math.min(   (   y[[3, 4, 5, 6]].weight   )
)
console.log(m)

而不是我希望看到的以下内容:

var m = Math.min(   (   y[3].weight   ), (   y[4].weight   ), (   y[5].weight   ),  (   y[6].weight   )
)
console.log(m)  

使用reduce()是否适合帮助代码按顺序运行range函数返回的数组中的每个数字,如果是,如何实现reduce()?

非常感谢,我真的很感激。

最佳答案

使用array.map()相反,加上 spread syntax ,像这样:

const min = Math.min( ...( range(i, i+j).map(i => y[i].weight) ) );

ma​​p 运算符将使用回调函数的结果和 spread 语法(那些 ...)创建一个新数组将“传播”数组值,就像它们是参数一样。

关于javascript - 如何使用reduce 测试数组的Math.max 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57742852/

相关文章:

javascript - AngularJs 获取从 ng-repeat 到 Javascript 变量的过滤输入?

javascript - 我怎样才能把所有的日子都排成一行

javascript - 在 DOM 对象上设置属性时如何避免无参数重新分配

Python生成具有随机步长的范围数组

javascript - 单击时将 Font Awesome 图标从一个动画变为另一个图标

javascript - 将数字的javascript数组拆分为范围

C# 分隔 args 参数

JavaScript, array.sort() 两个数组只基于其中一个

Java:0 <= x < n 范围内的随机长数

c# - 在两个日期之间创建月份数组