繁体   English   中英

Object.entities 过滤器

[英]Object.entities filter

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 非常适合使用,因为它兼具关键和价值。

当我使用 for of 语句时 Lint 抱怨并且我返回 undefined 的位置不起作用,因为它退出了条件,但我已经对此进行了注释,并在下面得到关于在箭头 function 中返回值的 lint 错误。

不允许使用 'forofstatement' 的 eslint 无限制语法

期望在箭头 function 一致返回的末尾返回一个值

无法发表评论,因为我还没有足够的代表,但是您是否有理由需要遍历 object 键以找到键值对? 在我看来,立即查找如下值会更容易:

function getValue(key){
   return mykeys[key];
}

这就是你想要的。 另一个答案几乎就在那里,但检查的是值而不是键。 测试 function 返回键匹配的值,否则返回未定义的值

 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'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM