使用 JavaScript 中的两个不同对象创建新数组对象
Make a new array objects using two different object in JavaScript
我有两个对象。我正在尝试这样做:
var obj1 = {
abc_name: "Jack",
abc_age: 24
}
var obj2 = {
xyz_name: "Mike",
xyz_age: 22
}
预期输出如下:
var obj = [{
fieldName: "Name",
abc_name: "Jack",
xyz_name: "Mike"
},
{
fieldName: "Age",
abc_age: 24,
xyz_age: 22
}]
我正在尝试使用嵌套的 for-in 循环。但没有得到预期的结果。有更好的解决方案或想法吗?提前致谢
实现此目的的一种方法是 Array.prototype.map
:
const obj1 = {
abc_name: "Jack",
abc_age: 24
}
const obj2 = {
xyz_name: "Mike",
xyz_age: 22
}
const obj = Object.entries(obj1).map(([k, v]) => {
const [, fieldname1] = k.split('_');
const [prefix2] = Object.keys(obj2)[0].split('_');
return {
fieldname: fieldname1[0].toUpperCase() + fieldname1.substring(1),
[k]: v,
[prefix2 + '_' + fieldname1]: obj2[prefix2 + '_' + fieldname1]
}
});
console.log(obj);
您可以按 fieldName
分组并获得一组收集的 key/value 对。
const
format = s => s[0].toUpperCase() + s.slice(1).toLowerCase(),
obj1 = { abc_name: "Jack", abc_age: 24 },
obj2 = { xyz_name: "Mike", xyz_age: 22 },
result = Object.values([obj1, obj2].reduce((r, o) => {
Object.entries(o).forEach(([k, v]) => {
const fieldName = format(k.split('_')[1]);
r[fieldName] ??= { fieldName };
r[fieldName][k] = v;
});
return r;
}, []));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
我有两个对象。我正在尝试这样做:
var obj1 = {
abc_name: "Jack",
abc_age: 24
}
var obj2 = {
xyz_name: "Mike",
xyz_age: 22
}
预期输出如下:
var obj = [{
fieldName: "Name",
abc_name: "Jack",
xyz_name: "Mike"
},
{
fieldName: "Age",
abc_age: 24,
xyz_age: 22
}]
我正在尝试使用嵌套的 for-in 循环。但没有得到预期的结果。有更好的解决方案或想法吗?提前致谢
实现此目的的一种方法是 Array.prototype.map
:
const obj1 = {
abc_name: "Jack",
abc_age: 24
}
const obj2 = {
xyz_name: "Mike",
xyz_age: 22
}
const obj = Object.entries(obj1).map(([k, v]) => {
const [, fieldname1] = k.split('_');
const [prefix2] = Object.keys(obj2)[0].split('_');
return {
fieldname: fieldname1[0].toUpperCase() + fieldname1.substring(1),
[k]: v,
[prefix2 + '_' + fieldname1]: obj2[prefix2 + '_' + fieldname1]
}
});
console.log(obj);
您可以按 fieldName
分组并获得一组收集的 key/value 对。
const
format = s => s[0].toUpperCase() + s.slice(1).toLowerCase(),
obj1 = { abc_name: "Jack", abc_age: 24 },
obj2 = { xyz_name: "Mike", xyz_age: 22 },
result = Object.values([obj1, obj2].reduce((r, o) => {
Object.entries(o).forEach(([k, v]) => {
const fieldName = format(k.split('_')[1]);
r[fieldName] ??= { fieldName };
r[fieldName][k] = v;
});
return r;
}, []));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }