javascript - 将集合映射到对象

标签 javascript lodash

如何将集合(对象数组)映射到具有集合对象成员中的键和值的对象? 该集合是:

const collection = [{
  id: 1,
  url: 'http://url1.com'
}, {
  id: 2,
  url: 'http://url2.com'
}, {
  id: 3,
  url: 'http://url3.com'
}];

结果应该是:

{
  1: 'http://url1.com',
  2: 'http://url2.com',
  3: 'http://url3.com'
}

最好使用 lodash

最佳答案

最简单的方法是循环遍历 collection 数组并向对象添加新的键值对,如下所示:

const collection=[{id:1,url:'http://url1.com'},{id:2,url:'http://url2.com'},{id:3,url:'http://url3.com'}];

const ouptut = {};
for (const o of collection)
  ouptut[o.id] = o.url

console.log(ouptut)

另一种方法是使用 map创建一个二维条目数组,如下所示:

[ [1,"http://url1.com"], [2,"http://url2.com"], [3,"http://url3.com"]]

然后使用 Object.fromEntries()从这些条目创建一个对象

const collection=[{id:1,url:'http://url1.com'},{id:2,url:'http://url2.com'},{id:3,url:'http://url3.com'}];

const ouptut = Object.fromEntries(collection.map(o => [o.id, o.url]))

console.log(ouptut)

关于javascript - 将集合映射到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56885734/

相关文章:

javascript - 如何将嵌套数组转换为普通数组并更改类型?

javascript - 如何在不使用 Module.default 符号的情况下将我的模块导出到浏览器?

javascript - 如何用大括号(包括子数组)包裹 json 的值?

Javascript悬停单独的选择

javascript - 使用 javascript 将多个过滤器类别应用于 <li>(s) 列表

javascript - google.setOnLoadCallback(initialize) 函数到底是什么意思?

javascript - 使用 Bootstrap 将鼠标悬停在菜单上时显示子菜单下的子菜单

javascript - Node - 将函数插入数组以与 Promise.all 一起使用

javascript - Cypress :找不到模块:错误:无法解析'cypress/types/lodash

javascript - 将 Lodash 的 mergeWith 与嵌套对象一起使用