Фильтр Object.entities - PullRequest
       4

Фильтр Object.entities

0 голосов
/ 09 октября 2019
const mykeys = {
  'foo' : 'bar',
  'tez' : 'test',
  'baz' : 'test2'
}

function test(passedValue) {
   //This Arrow function needs to return something else lint complains hence the undefined. Cannot use ForOf lint complains
   Object.entries(mykeys).forEach(([key, val]) => {
   if (key === passedValue) {
     return val
   }
  // return undefined
  })
}

Существует ли элегантный способ вернуть значение, когда ключ соответствует переданному значению. Поэтому, если передано значение foo, оно соответствует ключу foo и возвращает bar. Я думал, что object.entities идеально подходит для использования, поскольку он имеет и ключ, и значение.

Lint жалуется, когда я использую оператор for и когда я возвращаю undefined, не работает, поскольку это выходит из условия, но язакомментировал это, и получил ошибку lint ниже о возврате значения в функции стрелки.

eslint с использованием 'forofstatement' не разрешен без ограничений-синтаксис

Ожидайте возврата значения вфункция конца стрелки соответствует возвращению

Ответы [ 2 ]

0 голосов
/ 09 октября 2019

Это то, что вы хотите. Другой ответ был почти там, но проверка по значению вместо ключа. Функция test возвращает значение, в котором ключ соответствует или не определен, если в противном случае

const mykeys = {
  'foo': 'bar',
  'tez': 'test',
  'baz': 'test2'
}

const test = passedValue => 
  (Object.entries(mykeys).find(entry => entry[0] === passedValue) || [])[1];

console.log('test', test('foo'))
console.log('test', test('tez'))
console.log('test', test('baz'))
console.log('test', test('bab'))
0 голосов
/ 09 октября 2019

Не можете комментировать, так как у меня еще недостаточно повторений, но есть ли причина, по которой вам нужно перебирать ключи объекта, чтобы найти пару ключ-значение? Мне кажется, было бы проще мгновенно найти значение, как показано ниже:

function getValue(key){
   return mykeys[key];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...