我有一个由 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) ) );
map 运算符将使用回调函数的结果和 spread 语法(那些 ...
)创建一个新数组将“传播”数组值,就像它们是参数一样。
关于javascript - 如何使用reduce 测试数组的Math.max 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57742852/