我有一个JSON响应,
[{"name":"title","value":"STEP-01","translation":"STEP-01"},{"name":"meta_description","value":"","translation":"meta desc"}, ......]因此,我希望动态地创建一个对象数组,以便将name作为键,translation作为值,如下所示
data.en = {
title : 'STEP-01',
meta-description : meta desc
}我试过了,但是它创建了一个数组
jsonObj = []
$.each(result, function (index, value) {
lang_array = {};
lang_array[value.name] = value.translation;
jsonObj.push(lang_array);
})发布于 2017-10-16 10:49:30
根据您的示例,您正在尝试创建一个JS对象,而不是数组。
选项1:使用Array#reduce收集每个对象的名称并将其转换为新对象:
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和铺展将它们组合成单个对象
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);
https://stackoverflow.com/questions/46768471
复制相似问题