2015-02-07 50 views
0

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 
} 

任何幫助或方向。謝謝!

+0

據我所知,紅色和黃色也發生以及..我不明白你想要做什麼。 – msfoster 2015-02-07 23:25:32

回答

0

你需要這樣的:

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對象有一些特殊的屬性,你不要在你的循環需要。

0
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 
    } 
    } 
} 
+0

難道這隻會得到第一大元素(在這種情況下是綠色的)和皮膚所有其他(在這種情況下是薄荷)? – theadam 2015-02-07 23:55:09

0

你可以這樣做:

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

2

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

-1

編輯: 我想到了一個更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>