Найти максимальное значение удерживающего ключа, приводящего к отрисовке из пары ключ / значение в javascript - PullRequest
0 голосов
/ 14 января 2019

Мне интересно узнать способ печати key, который содержит максимальное значение. Ниже приведены несколько условий,

  • Если у нас есть максимальное значение из всех ключей, верните его. Пример: возврат c и его значение 4 из {a: 2, b:1, c:4, d:1}
  • Если у нас два ключа имеют одно и то же значение, и они являются максимальными, возвращаем оба значения. Пример: вернуть a и b со значением 4 из { a: 4, b: 4, c:2, d:1 }
  • В вышеуказанных условиях порядок должен быть a, затем c.
  • Если все ключи имеют одинаковое значение, вернуть false или ноль или что-то отличное от единицы. Пример: {a: 1, b:1, c:1, d:1}

Кодовый блок:

let obj = {
  a: 4,
  b: 4,
  c: 2,
  d: 1
};

let maxValueKey = Object.keys(obj).reduce((a, b) => obj[a] > obj[b] ? a : b);

console.log(maxValueKey);

Примечание: буду признателен, если вы скажете, почему -ve проголосовали?

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Это будет делать -

let obj = { a: 4, b: 4, c:2, d:1 }   
var maxValueKey = Object.keys(obj).reduce((a, b) => obj[a] > obj[b] ? a : b);
var t=[];
var e=Object.keys(obj);
e.forEach((r)=>{

if(obj[r]==obj[maxValueKey])
t.push(r);
})
alert(t)
0 голосов
/ 14 января 2019

Вы можете использовать array#reduce с Object.keys(), чтобы найти ключ максимального значения и сохранить его в массиве.

let maxValueKey = (o) => Object.keys(o).reduce((a, k, i, keys) => {
  if (!i || a.value < o [k]) {
    a.max.length = 0;
    a.max.push(k);
    a.value = o[k];
  } else if (a.value === o[k]) {
    a.max.push(k);
  }
  
  if (a.max.length === keys.length) {
    a.max.length = 0;
    a.value = 'All equal';
  }
  
  return a;
}, {max : [], value: undefined});
console.log(maxValueKey({ a: 4, b: 4, c:2, d:1 }));
console.log(maxValueKey({ a: 1, b:1, c:1, d:1 }));
console.log(maxValueKey({ a: 2, b:1, c:4, d:1 }));
console.log(maxValueKey({ a: 2, b:1 }));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...