我正在寻找将对象数组合并到单个对象数组中,并将对象键附加到内部对象键中的每个键
我有类似的对象
var myObj = {
"Details": [{
"car": "Audi",
"price": 40000,
"color": "blue"
},
{
"car": "BMW",
"price": 35000,
"color": "black"
}
],
"Accounts": [{
"Total": 2000
},
{
"Total": 3000
}
]
}
并且键和对象的长度未知,我想像这样合并它
[
{
"Detailscar": "Audi",
"Detailsprice": 40000,
"Detailscolor": "blue",
"AccountsTotal": 2000
},
{
"Detailscar": "BMW",
"Detailsprice": 35000,
"Detailscolor": "black",
"AccountsTotal": 3000
}
]
我尝试过 Ramda mergeAll,但它在我的情况下不起作用,因为它只合并对象
这是我尝试过的
var mergedArray = []
R.mapObjIndexed((instance, instanceName) => {
mergedArray.push(R.map((innerObj) => {
var customObject = {};
R.forEach((key) => {
customObject[`${instanceName}${key}`] = innerObj[key]
}, Object.keys(innerObj))
return customObject;
}, instance))
}, myObj)
我正在尝试将每个修改后的对象添加到 mergeArray 数组中,但它会为每次迭代添加,最后,它会创建 2 个数组
mergedArray
仍在创建两个不同的数组,其中对象的键将附加到对象的属性中,但我希望将其合并到单个对象数组中。
我错过了一些东西。我应该怎么做才能解决这个问题?
提出一些帮助。
最佳答案
使用Array.prototype.map
并将索引作为第二个参数传递给其回调以从 Account 对象获取元素
const data = {
"Details": [
{
"car": "Audi",
"price": 40000,
"color": "blue"
},
{
"car": "BMW",
"price": 35000,
"color": "black"
},
{
"car": "Porsche",
"price": 60000,
"color": "green"
}
],
"Accounts": [
{
"Total": 2000
},
{
"Total": 3000
},
{
"Total": 3000
}
]
};
const mergeCarData = ({ Details, Accounts} = {}) => {
return Details.length === Accounts.length ? Details.map(({ car, price, color}, idx) => ({
Detailscar: car,
Detailsprice: price,
Detailscolor: color,
AccountsTotal: Accounts[idx].Total
})) : [];
};
console.log(mergeCarData(data));
关于javascript - 将对象数组合并为单个对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46587577/