【问题标题】:How to get the property with the largest number?如何获得数量最多的财产?
【发布时间】:2015-05-24 23:28:15
【问题描述】:

我需要从原始对象返回一个新对象。 原始对象的属性值是大于0的数字,我想返回最大值的属性。 编辑:只有当属性的 $.isNumeric() 为真时,我才想返回最大的属性;为我糟糕的英语道歉。

obj = {2:1, 3:4, a:8, 5:2, 4:5 }; //expected newobj = {5:5};

【问题讨论】:

  • 不确定我是否完全理解这个问题,但对于初学者来说,你不能有一个带有重复键的对象文字。您有三个属性,属性名称为 3。
  • 没错,我会编辑它。
  • 为什么结果不是{a:8},因为那是最大的数值?写的不清楚的问题。最大的财产?最大的价值?哪个必须是数字?
  • 最大的属性是5,而不是4。最大值是8,而不是5。并且58 都不应该被跳过,因为$.isNumeric 返回true

标签: javascript loops object


【解决方案1】:

字符串数组中的最大数(忽略非数字):

function maxInArr(arr) {
    return Math.max.apply(void 0, arr.filter($.isNumeric).map(Number));
}

最大属性:

var maxProp = maxInArr(Object.keys(obj));

最大值:

var maxVal = maxInArr(Object.keys(obj).map(function(p){
    return obj[p];
}));

构建对象:

var obj2 = {};
obj2[maxProp] = maxVal;
obj2; // {5: 8}

【讨论】:

  • 这不是获取最高的属性名,而不是最高的属性值吗?
  • @jfriend00 是的,OP 说“具有最大价值的最大财产”。所以我认为这回答了这个问题,即使问题中的预期结果是不连贯的。
  • 肯定是令人困惑的问题,但他们显示的{3:5} 的结果并不是最大的键。
  • 由于问题的混淆,我重新编辑了一点。抱歉,感谢您的回答。
【解决方案2】:

尝试将您的数组放入这个简单的函数中:

function heighest(yourArray) {
    var keys = Object.keys(yourArray);
    var values = Object.keys(yourArray);
    for (int i = 0; i < keys.length; i++)
    {
        keys[i] = parseInt(keys[i]);
        values[i] = parseInt(values[i]);
    }
    var highestKey = Math.max.apply(Math, keys);
    alert('Heighest key: ' + highestKey + ', with value ' + yourArray[highestKey]);
};

【讨论】:

    【解决方案3】:

    如果我正确理解了问题,这应该是可能的答案。

    var obj = {2:1, 3:4, a:8, 5:2, 3:5, 3:5};
    var max = Number.MIN_VALUE;
    for(var propertyName in obj) {
        if(!isNaN(propertyName) && propertyName > 0){
            if(obj.hasOwnProperty(propertyName) && obj[propertyName] > max){
                max = obj[propertyName];
            }
        }
    }
    
    console.log(max);
    

    这里是 jsfiddle:http://jsfiddle.net/4bLe9jbj/1/

    【讨论】:

      猜你喜欢
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多