【问题标题】:from an array make an object with keys in the form of a name and values and return it [duplicate]从数组中以名称和值的形式创建一个带有键的对象并返回它[重复]
【发布时间】:2019-08-08 12:18:55
【问题描述】:

我有一个数组banks 我需要返回一个具有以下所有参数的对象

const banks = [{kod: 723,name: "bank",},{kod: 929,name: "bank2"}]

我试着用

const lookup = banks.map(item => {
  return ({[item.kod]: item.name }) 
})

但它返回结果[ {723: "bank"}, {929: "bank2"} ]

我怎样才能达到这个结果{723: "bank",929: "bank2"}

【问题讨论】:

  • 你不能用.map() 来做到这一点,因为重点是将现有数组的元素映射 到新数组的元素中。但是,您可以在发布的答案中使用.reduce()

标签: javascript arrays


【解决方案1】:

您可以改用reduce

const banks = [{kod: 723,name: "bank",},{kod: 929,name: "bank2"}]

const lookup = banks.reduce((op,item) => {
  op[item.kod] =  item.name
  return op
},{})

console.log(lookup)

【讨论】:

  • 哦,我完全忘记了reduce方法,非常感谢
【解决方案2】:

您可以将.reduce()spread syntax 一起使用,如下所示:

const banks = [{kod: 723,name: "bank",},{kod: 929,name: "bank2"}];

const res = banks.reduce((acc, {kod, name}) => ({...acc, [kod]: name}), {});
console.log(res);

【讨论】:

    【解决方案3】:

    您可以获取结果并将所有部分分配给一个新对象。

    const
        banks = [{ kod: 723, name: "bank" }, { kod: 929, name: "bank2" }],
        lookup = Object.assign({}, ...banks.map(({ kod, name }) => ({ [kod]: name })));
    
    console.log(lookup);

    【讨论】:

      猜你喜欢
      • 2018-07-17
      • 1970-01-01
      • 2018-02-13
      • 2019-06-07
      • 2021-03-17
      • 2020-09-27
      • 1970-01-01
      • 2020-11-02
      • 2020-06-29
      相关资源
      最近更新 更多