Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取数量最大的属性?_Javascript_Loops_Object - Fatal编程技术网

Javascript 如何获取数量最大的属性?

Javascript 如何获取数量最大的属性?,javascript,loops,object,Javascript,Loops,Object,我需要从原始对象返回一个新对象。 原始对象的属性值是大于0的数字,我希望返回具有最大值的属性。 编辑:仅当属性的$.isNumeric()为true时,我才想返回最大的属性;为我糟糕的英语道歉 obj = {2:1, 3:4, a:8, 5:2, 4:5 }; //expected newobj = {5:5}; 字符串数组中的最大数字(忽略非数字): 函数最大值(arr){ 返回Math.max.apply(void 0,arr.filter($.isNumeric).map(Number)

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

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

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

函数最大值(arr){
返回Math.max.apply(void 0,arr.filter($.isNumeric).map(Number));
}
最大地产:

var maxProp=maxInArr(Object.keys(obj));
最大值:

var maxVal=maxInArr(Object.keys(obj.map)(函数(p)){
返回obj[p];
}));
构建对象:

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

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

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

下面是JSFIDLE:

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

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]);
};
函数高度(数组){
var keys=Object.keys(数组);
var值=Object.keys(数组);
for(int i=0;i
一个相关的答案:我不确定我是否完全理解这个问题,但对于初学者来说,不能使用具有重复键的对象文字。您有三个属性,属性名为3。如果是,我将对其进行编辑。为什么结果不是
{a:8}
,因为这是最大的数值?不清楚的问题,因为它是书面的。最大的财产?最大值?哪个需要是数字?最大的属性是
5
,而不是
4
。最大值为
8
,而不是
5
。而且无论是
5
还是
8
都不应该被跳过,因为
$.isNumeric
返回
true
。这不是得到了最高的属性名,而不是最高的属性值吗?@jfriend00是的,OP说“最大的属性具有最大的值”。所以我认为这回答了问题,即使问题中的预期结果是不连贯的。令人困惑的问题是肯定的,但他们显示的
{3:5}
的结果不是最大的关键。由于问题的困惑,我重新编辑了一点。对不起,谢谢你的回答。