首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将对象数组转换为单个对象

将对象数组转换为单个对象
EN

Stack Overflow用户
提问于 2018-06-04 06:09:44
回答 6查看 1.5K关注 0票数 0

这是我的初始数组:

代码语言:javascript
复制
[ 
   { 
    id: 1,
    name: 'pos',
    code: 'pos123',
    appCode: 22,
   },
  { 
    id: 2,
    name: 'tailor',
    code: 'tailor123',
    appCode: 21,
  } 
]

我想要的输出:

代码语言:javascript
复制
{
   pos123: {
    id: 1,
    name: 'pos',
    code: 'pos123',
    appCode: 22,
  },
  tailor123: {
    id: 2,
    name: 'tailor',
    code: 'tailor123',
    appCode: 21,
  },
}

我试着用map做这件事,但我想不出来。我应该在这里使用reduce吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-06-04 06:14:32

您的输出不是数组--它是一个对象,因此必须使用reduce。您只能使用map将一个数组中的X个项目数转换为另一个数组中的X个项目数。

代码语言:javascript
复制
const input=[{id:1,name:'pos',code:'pos123',appCode:22,},{id:2,name:'tailor',code:'tailor123',appCode:21,}]
const output = input.reduce((a, obj) => {
  a[obj.code] = obj;
  return a;
}, {});
console.log(output);

票数 3
EN

Stack Overflow用户

发布于 2018-06-04 06:13:29

可以使用Object.assign将数组映射到预期的键和值形状。尝试:

代码语言:javascript
复制
let array = [ 
   { 
    id: 1,
    name: 'pos',
    code: 'pos123',
    appCode: 22,
   },
  { 
    id: 2,
    name: 'tailor',
    code: 'tailor123',
    appCode: 21,
  } 
];

let output = Object.assign(...array.map(x => ({ [x.code]: x })));

console.log(output);

票数 1
EN

Stack Overflow用户

发布于 2018-06-04 06:14:01

代码语言:javascript
复制
var yourArray = [ 
 { 
  id: 1,
  name: 'pos',
  code: 'pos123',
  appCode: 22,
  },
 {  
  id: 2,
  name: 'tailor',
  code: 'tailor123',
  appCode: 21,
 } 
];

//this is what you required
var output =  yourArray.reduce((obj, item) => {
  obj[code] =item;
  return obj;
}, {});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50674289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档