获取最高的属性值,并在Javascript的数组中返回它
我想循环遍历这个对象,并将具有最高属性值的键返回到数组中获取最高的属性值,并在Javascript的数组中返回它,javascript,Javascript,我想循环遍历这个对象,并将具有最高属性值的键返回到数组中 Object {clear-spring: 3, deep-autumn: 2, warm-spring: 1, light-summer: 2, light-spring: 2, clear-summer: 3} 在本例中,我需要如下数组: ["clear-summer", "clear-spring"] 使用jQuery或纯javascript有没有一种有效的方法来实现这一点?您可以使用它来循环对象 var object = {
Object {clear-spring: 3, deep-autumn: 2, warm-spring: 1, light-summer: 2, light-spring: 2, clear-summer: 3}
在本例中,我需要如下数组:
["clear-summer", "clear-spring"]
使用jQuery或纯javascript有没有一种有效的方法来实现这一点?您可以使用它来循环对象
var object = {clear-spring: 3, deep-autumn: 2, warm-spring: 1, light-summer: 2, light-spring: 2, clear-summer: 3};
// Iterates over the oject
for (var key in object) {
if(object.hasOwnProperty(key)) {
// Key === 'clear-spring' (sample)
// object[key] === 3 (sample)
// do whatever you want
}
}
您只需在项目上迭代一次,跟踪到目前为止发现的最大集合
var a = {'clear-spring': 3, 'deep-autumn': 2, 'warm-spring': 1, 'light-summer': 2, 'light-spring': 2, 'clear-summer': 3};
var max = {
val: Number.NEGATIVE_INFINITY,
keys: []
}
for (var prop in a) {
if (a.hasOwnProperty(prop)) {
var n = a[prop];
if (n >= max.val) {
if (n > max.val) {
max.keys = [];
}
max.val = n;
max.keys.push(prop);
}
}
}
不确定是否最有效,但首先找到最大值,然后返回并取出所有与最大值匹配的值
var obj = {'clear-spring': 3, 'deep-autumn': 2, 'warm-spring': 1, 'light-summer': 2, 'light-spring': 2, 'clear-summer': 3};
var ary = [];
var max = Number.NEGATIVE_INFINITY;
for (var prop in obj) {
if (obj[prop] > max) {
max = obj[prop];
}
}
for (var prop in obj) {
if (obj[prop] === max) {
ary.push(prop);
}
}
避免嵌套或重复循环的好方法您可以使用
-Infinity
而不是Number。否定的
@Oriol谢谢您的评论,我很清楚这一点,但我认为后者更清楚。
var obj = {'clear-spring': 3, 'deep-autumn': 2, 'warm-spring': 1, 'light-summer': 2, 'light-spring': 2, 'clear-summer': 3};
var ary = [];
var max = Number.NEGATIVE_INFINITY;
for (var prop in obj) {
if (obj[prop] > max) {
max = obj[prop];
}
}
for (var prop in obj) {
if (obj[prop] === max) {
ary.push(prop);
}
}