javascript - 在具有id的对象中获取对应的值

标签 javascript underscore.js lodash

我有一个看起来像这样的对象:

var cities = {

      "LA": [
         {id:1, description:"This is a test"},
         {id:3, description:"This is a third test"},
      ],

      "Chicago": [
         {id:2, description:"This is another test"}
      ],

      "Vegas": [
         {id:4, description:"This is another test"},
         {id:5, description:"This is a fifth test"},
         {id:6, description:"This is the last test"},
      ]
}

给定一个id我想找到相应的描述。

例如,如果给我id 1,我想返回this is a test。如果我得到 id 5,它将返回 This is a fifth test

有谁知道如何做到这一点,使用 vanilla js,或者使用 lodash 或下划线?

最佳答案

var item = [].concat(...Object.values(cities)).find(o => o.id == 2)
item && item.description
// => "This is another test"

如果您要查找多个不同的描述,正如我在评论中所述,我会准备一个查找:

lookup = {}
Object.values(cities).forEach(a => a.forEach(e => lookup[e.id] = e))
lookup[2].description
// => "This is another test"
lookup[3].description
// => "This is a third test"

(请注意,此答案使用 ES6 语法,但如果您需要旧版浏览器支持,可以轻松转换为 ES5。)

关于javascript - 在具有id的对象中获取对应的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38969481/

相关文章:

javascript - 使用特定步骤对数组的某些元素进行打乱

javascript - Backbone 收集数据谷歌地图

javascript - 如何使用 lodash 检查另一个数组中的数组值

javascript - 使用 lodash 将对象数组排序为 Top N,其中 n+1 为 "others"

javascript - 使用 lodash 在 React 中渲染网格

javascript - 刷新div而不用jquery重新加载页面

javascript - 如何覆盖 on_failure 屏幕截图的命名?

underscore.js - Bower 覆盖依赖

javascript - 深度克隆一个对象

javascript - chrome 扩展关闭或更新选项卡