[英]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.