【发布时间】:2014-10-23 05:58:34
【问题描述】:
您好,我在循环对象数组以查找最高属性值并返回包含该最高属性值的对象时遇到问题。假设我有这个对象数组:
var eachMapping = [ { I: 1 },
{ w: 1, a: 1, n: 1, t: 1 },
{ t: 1, h: 1, i: 1, s: 1 },
{ w: 1, o: 1, r: 1, d: 6 } ];
var largest = 0;
for(var i = 0; i < eachMapping.length; i++){
for(prop in eachMapping){
if(eachMapping[i][prop] > largest){
largest = eachMapping[i][prop]
wantedobject = eachMapping[i];
}
}
}
console.log(wantedobject)
这将返回未定义。我希望这个循环返回{ w: 1, o: 1, r: 1, d: 6 }
通过将其分配给wantedobject,因为数组中的所有对象,它的属性值是其他对象中所有属性值中最高的。谢谢!
【问题讨论】:
-
for(prop in eachMapping)应该是for(var prop in eachMapping[i])。 -
或者更确切地说:for(prop in eachMapping[i]) 对吧?
-
你也可以不使用循环,使用
reduce和Object.keys -
它可以在有和没有 var 的情况下使用。 var 有什么区别?
-
var是声明变量所必需的。如果您不使用var,您将创建一个隐式全局。不要忘记var。
标签: javascript for-loop