我有一個嵌套的陣列,它的屬性被稱為 "選項"。選項屬性是一個物件陣列,而現在每個物件都有它自己的屬性欄位,這也是一個物件陣列。
因此,我需要從選項陣列中的每個選項中獲取選項欄位,并將它們全部放在一個新的陣列中。
我將發布一張我的陣列的圖片,因為它可能更容易理解它的外觀。這里是陣列的圖片。
現在我試著通過它們進行映射,然后獲得欄位,但在我的方法中,它回傳陣列,但每個欄位物件,但我希望它被回傳為欄位內的每個欄位應該是一個新的陣列屬性。
const obj = {
key: ' clothes',
label: 'Clothes',
options: [
{
key: 'base-layers',
label: 'base-layers',
fields: [{ key: 'brand', label: 'brand' }, { key: 'size', label: 'size' }]。
},
{
key: 'front-layers',
label: 'front-layers',
fields: [{ key: 'gender', label: 'Gender' }, { key: '條件', label: 'Condition' }]。
},
],
};
const getFields = obj.options.map(a => a. map(f => f.fields) )。
const final = getFields.reduce((r, c) =>/span> Object. assign(r,c),{})。
因此,欄位物件中的每個欄位都應該是新的物件陣列中的自己的屬性。
我非常感謝您的幫助!
uj5u.com熱心網友回復:
你可以使用一個單一的reduce函式來遍歷每個選項并合并欄位集合。
。const obj = {
key: ' clothes',
label: 'Clothes',
options: [
{
key: 'base-layers',
label: 'base-layers',
fields: [{ key: 'brand', label: 'brand' }, { key: 'size', label: 'Size' }, { key: '條件', label: 'Condition' }]。
},
{
key: 'front-layers',
label: 'front-layers',
fields: [{ key: 'gender', label: 'Gender' }, { key: '條件', label: 'Condition' }]。
},
],
};
const allFields = obj.options. reduce((fields, option) => [...fields, ... option.fields], [])。
console.log(allFields)。
//合并所有欄位,沒有重復(未優化)。
const allFieldsUnique = obj.options.reduce((fields, option) => /span> {
return [...fields, ...option.fields.filter(a => //span> ! fields.some(b => b.key ==a.key) )]。
}, []);
console.log(allFieldsUnique);
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
使用Array.flatMap()從每個選項中抽取欄位,得到一個陣列。
如果你想要一個物件,將欄位映射為一個[key, value]對的陣列,然后用Object.fromEntries()轉換為一個物件:
const obj = {"key": "衣服","標簽":"衣服","選項"。 [{"key":"base-layers","標簽": "base-layers","field":[{"key":"brand"," label": "Brand"},{"key":"size"," label"。 "Size"}]},{"key": "front-layers","標簽":"front-layers","欄位": [{"key":"gender","標簽":"Gender"},{"key": "條件","標簽":"條件"}]}。
const arr = obj.options. flatMap(span class="hljs-params">option => option.fields)
console.log(arr)。
const object = Object.fromEntries(obj. options.flatMap(span class="hljs-params">option =>
option.fields.map(({ key, label }) => [key, label])
));
console.log(object);
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/322420.html
標籤:
上一篇:使用過濾器與切片陣列方法不作業
