Javascript 获取过滤对象数组的JS中的最大值

Javascript 获取过滤对象数组的JS中的最大值,javascript,arrays,Javascript,Arrays,我有一组对象,如: var myArr = [{ number: 5, shouldBeCounted: true }, { number: 6, shouldBeCounted: true }, { number: 7, shouldBeCounted: false }, ...]; 如何为应计入设置为true的对象查找最大编号?我不想使用循环,只是想知道这在Math.max.apply(或类似的东西)中是否可行。所有解决方案都需要遍历数组,除

我有一组对象,如:

var myArr = [{
    number: 5,
    shouldBeCounted: true
}, {
    number: 6,
    shouldBeCounted: true
}, {
    number: 7,
    shouldBeCounted: false
}, ...];

如何为
应计入
设置为
true
的对象查找最大
编号
?我不想使用循环,只是想知道这在
Math.max.apply
(或类似的东西)中是否可行。所有解决方案都需要遍历数组,除非在添加到数组之前要在变量中存储max number。

不,这是不可能的。您可以像这样将
Math.max
.map
一起使用

var myArr=[{
编号:5,
应该考虑到:是的
}, {
编号:6,
应该考虑到:是的
}, {
编号:7,
应该考虑:错误
}];
var max=Math.max.apply(数学,myArr.map(函数(el)){
如果(应计入标高){
返回el.number;
}
返回-无限;
}));

控制台日志(最大值).reduce()

var myArr=[{
编号:5,
应该考虑到:是的
}, {
编号:6,
应该考虑到:是的
}, {
编号:7,
应该考虑:错误
}];
var max=myArr.reduce(函数(最大值,当前值){
返回current.shouldbeccounted?数学最大值(max,current.number):max;
},-无穷大);

控制台日志(最大值)另一个不太详细的解决方案(如果您的数字都是正数):


不可能。你可以像@Alexander那样用
.map
Math.max
,你把它写在评论中而不是答案中。。。因为?如果所有元素都有
应该被计算
false
那么有什么特别的原因允许应用而不是循环呢?我想任何答案都会在你的物体上形成一个循环。有什么理由限制吗?也就是说,如果所有数字都是负数,则返回
5e-324
(奇怪的是)。将
Number.MIN_值
替换为
-Infinity
可以修复此问题。
var max = Math.max.apply(Math, myArr.map(function(el) {
    return el.number*el.shouldBeCounted;
}));