将对象内部的对象数组创建为多个对象 JavaScript
Make an array of objects inside object as multiple objects JavaScript
我需要转换父对象中多个对象中的对象数组:
实际对象:
{
name: 'John Doe',
Age: 50,
email: 'j@gmail.com'
wishlist: [
{product1 : 1},
{product2 : 3},
{product3 : 5},
{product4 : 2},
]
}
目标:
{
name: 'John Doe',
Age: 50,
email: 'j@gmail.com',
product1 : 1,
product2 : 3,
product3 : 5,
product4 : 2,
}
有人知道怎么做吗?
亲切的问候,
在心愿单数组上使用 reduce()
方法,然后使用 spread
运算符创建最终对象。
const myObj = {
name: 'John Doe',
Age: 50,
email: 'j@gmail.com',
wishlist: [
{product1 : 1},
{product2 : 3},
{product3 : 5},
{product4 : 2},
]
}
const processData = (data) => {
const wishlist = data.wishlist.reduce((result, obj) => {
return {...result, ...obj};
}, {});
const finalObj = {...data, ...wishlist};
delete finalObj.wishlist;
return finalObj;
}
console.log(processData(myObj));
您可以合并所有产品,然后将它们与对象合并,然后删除初始数组。我认为这种方式更好,而不是在迭代其属性之一的同时修改原始对象。
let products = {}
for (let product of obj.wishlist)
products = {...products, ...product}
obj = {...obj, ...products}
delete obj.wishlist
你可以试试这个,
var obj = {
name: 'John Doe',
Age: 50,
email: 'j@gmail.com',
wishlist: [{ product1: 1 }, { product2: 3 }, { product3: 5 }, { product4: 2 }]
};
var newObj = Object.assign({}, ...obj.wishlist);
delete obj.wishlist;
const finalObj = { ...obj, ...newObj };
console.log(finalObj);
您可以使用 destructuring to grab your wishlist
array, and an object of properties excluding your whishlist array (stored in r
), which you can then use Object.assign()
with the spread syntax 将您愿望清单数组中的所有对象合并到您的 r
对象中:
const {wishlist, ...r} = { name: 'John Doe', Age: 50, email: 'j@gmail.com', wishlist: [ {product1 : 1}, {product2 : 3}, {product3 : 5}, {product4 : 2}, ] };
const res = Object.assign(r, ...wishlist);
console.log(res);
如果有人正在寻找更通用的答案。
我编写了代码来在另一个对象或数组中转换对象或数组。
如果你问我就太过分了。
const sample = [{
name: 'John Doe',
Age: 50,
email: 'j@gmail.com',
wishlist: [{ product1: 1 }, { product2: 3 }, { product3: 5 }, { product4: 2 }]
}];
const transformArray = array => {
let obj = {};
array.forEach(item => {
if (Array.isArray(item)) {
obj = { ...obj, ...transformArray(item)};
} else if (typeof item == 'object') {
obj = { ...obj, ...transformObj(item)};
}
});
return obj;
}
const transformObj = object => {
let obj = {};
Object.keys(object).forEach(key => {
const item = object[key];
if (Array.isArray(item)) {
obj = { ...obj, ...transformArray(item) };
} else if (typeof item == 'object') {
obj = { ...obj, ...transformObj(item) };
} else {
obj = { ...obj, [key]: item };
}
});
return obj;
}
console.log(transformObj(sample));
我需要转换父对象中多个对象中的对象数组:
实际对象:
{
name: 'John Doe',
Age: 50,
email: 'j@gmail.com'
wishlist: [
{product1 : 1},
{product2 : 3},
{product3 : 5},
{product4 : 2},
]
}
目标:
{
name: 'John Doe',
Age: 50,
email: 'j@gmail.com',
product1 : 1,
product2 : 3,
product3 : 5,
product4 : 2,
}
有人知道怎么做吗? 亲切的问候,
在心愿单数组上使用 reduce()
方法,然后使用 spread
运算符创建最终对象。
const myObj = {
name: 'John Doe',
Age: 50,
email: 'j@gmail.com',
wishlist: [
{product1 : 1},
{product2 : 3},
{product3 : 5},
{product4 : 2},
]
}
const processData = (data) => {
const wishlist = data.wishlist.reduce((result, obj) => {
return {...result, ...obj};
}, {});
const finalObj = {...data, ...wishlist};
delete finalObj.wishlist;
return finalObj;
}
console.log(processData(myObj));
您可以合并所有产品,然后将它们与对象合并,然后删除初始数组。我认为这种方式更好,而不是在迭代其属性之一的同时修改原始对象。
let products = {}
for (let product of obj.wishlist)
products = {...products, ...product}
obj = {...obj, ...products}
delete obj.wishlist
你可以试试这个,
var obj = {
name: 'John Doe',
Age: 50,
email: 'j@gmail.com',
wishlist: [{ product1: 1 }, { product2: 3 }, { product3: 5 }, { product4: 2 }]
};
var newObj = Object.assign({}, ...obj.wishlist);
delete obj.wishlist;
const finalObj = { ...obj, ...newObj };
console.log(finalObj);
您可以使用 destructuring to grab your wishlist
array, and an object of properties excluding your whishlist array (stored in r
), which you can then use Object.assign()
with the spread syntax 将您愿望清单数组中的所有对象合并到您的 r
对象中:
const {wishlist, ...r} = { name: 'John Doe', Age: 50, email: 'j@gmail.com', wishlist: [ {product1 : 1}, {product2 : 3}, {product3 : 5}, {product4 : 2}, ] };
const res = Object.assign(r, ...wishlist);
console.log(res);
如果有人正在寻找更通用的答案。
我编写了代码来在另一个对象或数组中转换对象或数组。
如果你问我就太过分了。
const sample = [{
name: 'John Doe',
Age: 50,
email: 'j@gmail.com',
wishlist: [{ product1: 1 }, { product2: 3 }, { product3: 5 }, { product4: 2 }]
}];
const transformArray = array => {
let obj = {};
array.forEach(item => {
if (Array.isArray(item)) {
obj = { ...obj, ...transformArray(item)};
} else if (typeof item == 'object') {
obj = { ...obj, ...transformObj(item)};
}
});
return obj;
}
const transformObj = object => {
let obj = {};
Object.keys(object).forEach(key => {
const item = object[key];
if (Array.isArray(item)) {
obj = { ...obj, ...transformArray(item) };
} else if (typeof item == 'object') {
obj = { ...obj, ...transformObj(item) };
} else {
obj = { ...obj, [key]: item };
}
});
return obj;
}
console.log(transformObj(sample));