Object {green: 3, red: 2, blue: 1, yellow: 1, mint: 3}
計數出現在javascript對象
欲循環通過該對象和陣列中的返回與該最匹配項的鍵(由值)。在這種情況下,它將是薄荷和綠色,如["mint", "green"]
。
到目前爲止,我對此表示讚賞
for (var i = 0; i < key(obj).length; i++) {
... // no idea
}
任何幫助或方向。謝謝!
Object {green: 3, red: 2, blue: 1, yellow: 1, mint: 3}
計數出現在javascript對象
欲循環通過該對象和陣列中的返回與該最匹配項的鍵(由值)。在這種情況下,它將是薄荷和綠色,如["mint", "green"]
。
到目前爲止,我對此表示讚賞
for (var i = 0; i < key(obj).length; i++) {
... // no idea
}
任何幫助或方向。謝謝!
你需要這樣的:
var maxValue = -10000000;
for(var prop in obj) {
if(!obj.hasOwnProperty(prop)) {
continue;
}
if(obj[prop] > maxValue) {
maxValue = obj[prop];
}
}
// show maxValue
注意:您需要obj.hasOwnProperty(prop)
因爲JS對象有一些特殊的屬性,你不要在你的循環需要。
var data = {green: 3, red: 2, blue: 1, yellow: 1, mint: 3}
var maxProperty = null, maxValue = -1;
for (var prop in data) {
if (data.hasOwnProperty(prop)) {
var value = data[prop]
if (value > maxValue) {
maxProperty = prop
maxValue = value
}
}
}
難道這隻會得到第一大元素(在這種情況下是綠色的)和皮膚所有其他(在這種情況下是薄荷)? – theadam 2015-02-07 23:55:09
你可以這樣做:
var someObjects = {
green: 3,
red: 2,
blue: 1,
yellow: 1,
mint: 3
};
function findOccurances(of, inn) {
var array = [];
for (var obj in inn) {
if (someObject[obj] == of) {
array.push(obj);
}
}
return array;
}
var obj = {"green": 3, "red": 2, "blue": 1, "yellow": 1, "mint": 3},
keys = Object.keys(obj), // get all keys as array
max = Math.max.apply(Math, keys.map(function(key) { return obj[key]; })), // find the biggest number of occurrences
result;
\t
result = keys.filter(function(key) { // find the relevant keys
\t return obj[key] == max;
});
console.log(result);
編輯: 我想到了一個更consie的解決辦法是在ORD呃。這裏是一個:
var bar = { green: 3, red: 2, blue: 1, yellow: 1, mint: 3 };
var findMaxProperties = function (foo) {
var keys = Object.keys(foo);
var max = keys.map(function (key) {
return foo[key];
}).reduce(function (previous, current) {
return Math.max(previous, current);
});
return keys.filter(function (key) {
return foo[key] == max;
});
};
var result = findMaxProperties(bar);
$('#result').text(result);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<div id="result"></div>
如果我正確理解你的問題(如果是這樣的話,那麼你真的需要編輯:)),那麼你想通過一個對象來尋找和發現它的屬性具有最高的數值。如果是這樣的話,那麼沿着這些線路就可以做到這一點。
var foo = { green: 3, red: 2, blue: 1, yellow: 1, mint: 3 };
var maxValue = Number.MIN_VALUE, maxValueProperties = [];
for (var key in foo) {
if(foo[key] == maxValue) {
maxValueProperties.push(key);
}
if(foo[key] > maxValue) {
maxValue = foo[key];
maxValueProperties = [];
maxValueProperties.push(key);
}
}
$('#result').text(maxValueProperties);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<div id="result">result</div>
據我所知,紅色和黃色也發生以及..我不明白你想要做什麼。 – msfoster 2015-02-07 23:25:32