Как получить максимальный номер и ключ - PullRequest
1 голос
/ 19 февраля 2020

У меня есть вот так

var hash = {};
hash['a'] = ["a", "b", "c", "d", "e"];
hash['b'] = ["a", "b", "c"];
hash['k'] = ["q", "b"];

Math.max(Object.keys(hash)
    .map(function(key) {
      return hash[key].length;
    })
  )

Возвращает 5, но я хочу получить ключ га sh 'a' одновременно.

Возможно ли это?

Ответы [ 3 ]

3 голосов
/ 19 февраля 2020

Объедините Object.entries() и Array.prototype.reduce(), чтобы получить ключ и элементы за этим ключом (и их длину)

var hash = {
   a: ["a", "b", "c", "d", "e"]
  ,b: ["a", "b", "c"]
  ,k: ["q", "b"]
};

var result = Object.entries(hash)
                   .reduce((r, c) => r[1].length > c[1].length ? r : c);
                   
console.log(result);
0 голосов
/ 19 февраля 2020

Я использовал этот подход для вашей задачи:

var hash = {};
hash['a'] = ["a", "b", "c", "d", "e"];
hash['b'] = ["a", "b", "c"];
hash['k'] = ["q", "b"];

var largestInfo = {
  key:'',
  length:0
}

 Object.keys(hash).map(function(key) {
    if(hash[key].length > largestInfo.length){
        largestInfo.key = key;
        largestInfo.length = hash[key].length;
    }
    return hash[key].length;
});
console.log(largestInfo);
0 голосов
/ 19 февраля 2020

Соответствует ли это вашему требованию?

Я использовал sort вместо Math.max здесь, чтобы найти максимумы

var hash = {};
hash['a'] = ["a", "b", "c", "d", "e"];
hash['b'] = ["a", "b", "c"];
hash['k'] = ["q", "b"];

var result = Object.keys(hash)
    .map(function(key) {
      return {[key]: hash[key].length};
    }).sort(function(a, b){ 
      return a.key > b.key
    })[0]
  
  
console.log(result);
...