首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript动态创建对象数组

Javascript动态创建对象数组
EN

Stack Overflow用户
提问于 2017-10-16 10:44:42
回答 1查看 1.7K关注 0票数 0

我有一个JSON响应,

代码语言:javascript
复制
[{"name":"title","value":"STEP-01","translation":"STEP-01"},{"name":"meta_description","value":"","translation":"meta desc"}, ......]

因此,我希望动态地创建一个对象数组,以便将name作为键,translation作为值,如下所示

代码语言:javascript
复制
data.en = {
  title : 'STEP-01',
  meta-description :     meta desc
}

我试过了,但是它创建了一个数组

代码语言:javascript
复制
jsonObj = []

$.each(result, function (index, value) {

             lang_array =   {};
            lang_array[value.name]  =   value.translation;
            jsonObj.push(lang_array);

        })
EN

回答 1

Stack Overflow用户

发布于 2017-10-16 10:49:30

根据您的示例,您正在尝试创建一个JS对象,而不是数组。

选项1:使用Array#reduce收集每个对象的名称并将其转换为新对象:

代码语言:javascript
复制
const data = [{"name":"title","value":"STEP-01","translation":"STEP-01"},{"name":"meta_description","value":"","translation":"meta desc"}];

const result = data.reduce((r, { name, translation }) => {
  r[name] = translation;
  
  return r;
}, {});

console.log(result);

选项2:使用Array#map创建具有属性和值的对象集合,并使用Object#assign铺展将它们组合成单个对象

代码语言:javascript
复制
const data = [{"name":"title","value":"STEP-01","translation":"STEP-01"},{"name":"meta_description","value":"","translation":"meta desc"}];

const result = Object.assign(...data.map(({ name, translation }) => ({ [name]: translation })));

console.log(result);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46768471

复制
相关文章

相似问题

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