如何转换对象的数组
const arr = [{
my_first_name_1: {
value: 'jane'
},
my_last_name_1: {
value: 'anderson'
}
}, {
my_first_name_2: {
value: 'alex'
},
my_last_name_2: {
value: 'johnson'
}
}]
进入这个?
[{
"first_name": "jane",
"last_name": "anderson",
}, {
"first_name": "alex",
"last_name": "johnson",
}]
我一直在用部分字符串匹配属性
const result = arr.reduce((accum, obj) => {
obj.match(first_name) //how to do partial matching? Tried .includes but it doesn't work
}, [])
您可以使用带有模板文字的.map()
,从文档中读取:
map()
方法创建一个新数组,该数组填充了对调用数组中的每个元素调用所提供函数的结果。模板文字是允许嵌入表达式的字符串文字。可以使用多线字符串和字符串插值功能。
尝试如下:
const arr = [{ my_first_name_1: { value: 'jane' }, my_last_name_1: { value: 'anderson'} }, { my_first_name_2: { value: 'alex' }, my_last_name_2: { value: 'johnson' } }];
const result = arr.map((e, i) => ({
first_name: e[`my_first_name_${i + 1}`].value,
last_name: e[`my_last_name_${i + 1}`].value
}))
console.log(result);
我希望这能有所帮助!
如果键不是按顺序排列的,则可以将.map()
与Object.values()
一起使用。.map()
方法将迭代数组中的每个对象,然后您可以使用Object.values()
获得这些对象的值。从值数组(即对象(中,可以析取对象value
属性,并将其别名为first_name
和last_name
。然后,您可以将这两个析构函数值作为对象返回:
const arr = [{ my_first_name_1: { value: 'jane' }, my_last_name_1: { value: 'anderson' } }, { my_first_name_2: { value: 'alex' }, my_last_name_2: { value: 'johnson' } }];
const res = arr.map(obj => {
const [{value: first_name}, {value: last_name}] = Object.values(obj);
return {first_name, last_name};
});
console.log(res);
您还可以获取每个对象的键,然后使用reduce()
获取它们的值
const arr = [{
my_first_name_1: {
value: "jane",
},
my_last_name_1: {
value: "anderson",
},
},
{
my_first_name_2: {
value: "alex",
},
my_last_name_2: {
value: "johnson",
},
},
];
let result = arr.reduce((p, c) => {
let [first, last] = Object.keys(c);
return [...p, {
first_name: c[first].value,
last_name: c[last].value,
}];
}, []);
console.log(result);