簡體   English   中英

從字典javascript獲取所有最小值

[英]Getting all minimal Values from dictionary javascript

我有一個很長的字典,有許多條目{y:10, au:41, w:41, m:11, u:21, t:1, d:1}我需要的是獲得具有最低值的所有鍵一個數組。 我發現了這個( 從對象獲取具有最高值的鍵 )但是這不適用於多個最小值(最大值)

我只需要使用核心JavaScript。

最快和最簡單的可能是使用Object.keys將對象鍵作為數組獲取,並根據具有最低值的項過濾該數組。
首先需要找到最低值,然后過濾,這是一種方法

 var obj = {y:10, au:41, w:41, m:11, u:21, t:1, d:1}; var keys = Object.keys(obj); var lowest = Math.min.apply(null, keys.map(function(x) { return obj[x]} )); var match = keys.filter(function(y) { return obj[y] === lowest }); document.body.innerHTML = '<pre>' +JSON.stringify(match, null, 4)+ '</pre>'; 

獲取鍵,然后創建傳遞給Math.min.apply的值數組,以獲取對象中的最小值。

然后,只需過濾鍵中任何與對象中最低值匹配的內容。

這是使用sort的另一種方式

var obj   = {y:10, au:41, w:41, m:11, u:21, t:1, d:1};
var keys  = Object.keys(obj).sort(function(a,b) { return obj[a] - obj[b]; });
var match = keys.filter(function(x) { return obj[x] === obj[keys[0]]; });

這是Array#reduce()的解決方案:

 var object = { y: 10, au: 41, w: 41, m: 11, u: 21, t: 1, d: 1 }, result = function (o) { var keys = Object.keys(o); return keys.reduce(function (r, k) { if (o[k] < o[r[0]]) { return [k]; } if (o[k] === o[r[0]]) { r.push(k); } return r; }, [keys.shift()]); }(object); document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>'); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM