在javascript对象中返回最大值

雅马哈32088

我正在寻找一种简单的解决方案来查找对象中的最大整数,我将以下对象命名为 numberZeros

Object {0: 3, 1: 3, 3: 2, 4: 3, 5: 4, 6: 2, 7: 3, 8: 5}

这是我尝试查看哪个值最大但返回未定义的方法。

Array.max = function( numberZeros ){
    console.log(Math.max.apply( Math, numberZeros));
};

我猜这是因为它不适用于对象。我将如何退货8: 5

i

问题是.apply需要一个数组而不是一个对象。

而在你的情况下,你 应该可以使用数组而不是对象。(编辑:对不起,我没看到它稀疏)

但是你可以使用

var obj = {0: 3, 1: 3, 3: 2, 4: 3, 5: 4, 6: 2, 7: 3, 8: 5},
    max = -Infinity;
for(var i in obj) {
    if(obj.hasOwnProperty(i)) {
        max = Math.max(max, obj[i]);
    }
}

但我认为以下更好:

var arr = [3, 3,, 2, 3, 4, 2, 3, 5],
    max = Math.max.apply(null, arr);

看来您想获得argmax而不是max然后,使用

var obj = {0: 3, 1: 3, 3: 2, 4: 3, 5: 4, 6: 2, 7: 3, 8: 5},
    max = -Infinity,
    argmax = void(0);
for(var i in obj) {
    if(obj.hasOwnProperty(i) && obj[i] >= max) {
        max = obj[i];
        argmax = i;
    }
}

或者

var arr = [3, 3,, 2, 3, 4, 2, 3, 5],
    max = -Infinity,
    argmax = void(0);
for(var i=0, l=arr.length; i<l; ++i) {
    if(arr[i] >= max) {
        max = obj[i];
        argmax = i;
    }
}

注意:为了使,我使用>=了object / array中所有值都是-Infinity的情况argmax如果您确定至少有一个大于的值-Infinity,则可以使用<并获得一些微秒。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从数组中返回具有最大值的对象

来自分类Dev

用Javascript返回数组中的最大值

来自分类Dev

返回数组javascript的最大值

来自分类Dev

从SQL选择中返回最大值

来自分类Dev

在对象数组中查找属性的最大值并返回整个对象

来自分类Dev

从表中返回具有最大值lua的对象的名称

来自分类Dev

如何从角度数组对象返回最大值

来自分类Dev

对象列表中对象参数的最大值

来自分类Dev

Javascript:找不到嵌套在对象中的数组的最大值

来自分类Dev

在包含 NaN 值的对象数组中查找最大值

来自分类Dev

QueryDSL返回最大值

来自分类Dev

返回最大值的索引

来自分类Dev

使用JavaScript从JSON对象获取最大值?

来自分类Dev

在 Python 中的对象列表中查找最大值

来自分类Dev

返回行标签以获取Excel R中的最大值

来自分类Dev

在Excel中按ID返回的最大值

来自分类Dev

在列中查找最大值并返回行号

来自分类Dev

在SQL Server 2008中跨列返回最大值

来自分类Dev

返回行中3个最大值的列名称

来自分类Dev

在具有多个条件的向量中返回最大值

来自分类Dev

如何使用python从数组中返回最大值索引?

来自分类Dev

从Angular中的对象获取具有最大值的元素

来自分类Dev

从对象的数组列表中获取最大值?

来自分类Dev

在对象数组中查找属性的最大值

来自分类Dev

在字典中查找对象的属性的最大值

来自分类Dev

从熊猫中的多个对象获取最大值.max()

来自分类Dev

如何在对象数组中获取最大值

来自分类Dev

从对象的数组列表中获取最大值?

来自分类Dev

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