如何获得数量最多的物业?

时间:2015-05-24 23:28:16

标签: javascript loops object

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

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

3 个答案:

答案 0 :(得分:0)

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

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}

答案 1 :(得分:0)

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

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/

答案 2 :(得分:0)

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

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]);
};