假裝我有這個輸出資料:
const fixedObj = {
factory: 'QWERTY',
}
const flexibleObj = {
itemName: ['abc', 'xyz'],
quantity: ['1', '2'],
color: ['red', 'blue'],
price: ['20$', '30$'],
}
這兩個物件來自一個大物件,但必須將它們分開才能知道鍵是否具有陣列。如果鍵包含具有類似flexibleObj的陣列的資料,那么最終輸出應該是這樣的:
{
factory: 'QWERTY',
itemName: 'abc',
quantity: '1',
color: 'red',
price: '20$'
},
{
factory: 'QWERTY',
itemName: 'xyz',
quantity: '2',
color: 'blue',
price: '30$'
}
我的問題是:有沒有像這樣轉換的可能方法?
uj5u.com熱心網友回復:
您可以遍歷陣列并使用當前索引從所有其他陣列中itemName獲取資訊以構建新物件。
const fixedObj={factory:"QWERTY"},flexibleObj={itemName:["abc","xyz"],quantity:["1","2"],color:["red","blue"],price:["20$","30$"]};
// Destructure the properties from the object
const {
itemName,
quantity,
color,
price
} = flexibleObj;
// Iterate over the itemName array and utilise
// the index to get the elements of the other
// arrays to build an object
const arr = itemName.map((item, i) => {
return {
factory: fixedObj.factory,
itemName: item,
quantity: quantity[i],
color: color[i],
price: price[i]
};
});
console.log(arr);
uj5u.com熱心網友回復:
const fixedObj = {
factory: 'QWERTY',
}
const flexibleObj = {
itemName: ['abc', 'xyz'],
quantity: ['1', '2'],
color: ['red', 'blue'],
price: ['20$', '30$'],
}
const result = []
for (let i = 0; i < flexibleObj.itemName.length; i ) {
result.push({
...fixedObj,
itemName: flexibleObj.itemName[i],
quantity: flexibleObj.quantity[i],
color: flexibleObj.color[i],
price: flexibleObj.price[i],
})
}
console.log(result)
uj5u.com熱心網友回復:
這是一種通用方法,它處理 和 中的所有現有flexibleObj屬性fixedObj:
const fixedObj={factory:"QWERTY", location:"Hanover"},flexibleObj={itemName:["abc","xyz"],quantity:["1","2"],color:["red","blue"],price:["20$","30$"],extra:[7,13]};
const flex=Object.entries(flexibleObj);
const arr = flex[0].map((_,i)=>{
const o = {...fixedObj};
flex.forEach(([k,ar])=>o[k]=ar[i]);
return o;
});
console.log(arr);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/478471.html
標籤:javascript 数组 目的
