我需要从原始对象返回一个新对象。 原始对象的属性值是大于0的数字,我想返回具有最大值的属性。 编辑:我想只有当属性的$ .isNumeric()为真时才返回最大的属性;为我可怜的英语道歉。
obj = {2:1, 3:4, a:8, 5:2, 4:5 }; //expected newobj = {5:5};
答案 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]);
};