[英]javascript split array in two arrays
我正在嘗試使用第一個數組中的值將此數組拆分為兩個不同的 arrays。
這是我的初始數組:
"carList": [
{
"brand": [
{
"model": [
{ "motor": { "id": 1 }, "color": 10 },
{ "motor": { "id": 2 }, "color": 20 },
{ "motor": { "id": 3 }, "color": 30 },
{ "motor": { "id": 4 }, "color": 40 }
]
}
]
},
{ "brand": [{ "model": [{ "size": 400 }] }] },
{ "brand": [{ "model": [{ "size": 500 }] }] }
],
第一個數組必須包含帶有電機的 model 和 colors。第二個數組應該只包含帶有尺寸的品牌(我可以有不確定數量的品牌)。
我希望這是一個 output:
"carList": [
{
"brand": [
{
"model": [
{ "motor": { "id": 1 }, "color": 10 },
{ "motor": { "id": 2 }, "color": 20 },
{ "motor": { "id": 3 }, "color": 30 },
{ "motor": { "id": 4 }, "color": 40 }
]
}
]
},
],
"carList": [
{ "brand": [{ "model": [{ "size": 400 }] }] },
{ "brand": [{ "model": [{ "size": 500 }] }] }
],
嘗試拆分數組時,我嘗試只創建具有大小的數組,但我得到了全局的 carList:
const carList1 = carList.filter((x) =>
x.brand.filter((y) => y.model.filter((z) => z.size)
);
我怎樣才能拆分我的數組並得到這個 output?
更新這是我更一般的示例測試我可以有很多品牌和 model,
"carList": [
{
"brand": [
{
"model": [
{ "motor": { "id": 1 }, "color": 10 },
{ "motor": { "id": 2 }, "color": 20 },
{ "motor": { "id": 3 }, "color": 30 },
{ "motor": { "id": 4 }, "color": 40 }
]
},
{
"model": [
{ "motor": { "id": 1 }, "color": 11 },
{ "motor": { "id": 2 }, "color": 22 },
{ "motor": { "id": 3 }, "color": 33 },
{ "motor": { "id": 4 }, "color": 44 }
]
}
]
},
{ "brand": [
{
"model": [
{ "size": 400 },
]
},
{
"model": [
{ "size": 401 }
]
},
{ "brand": [{ "model": [{ "size": 500 }] }] }
],
這將是一種方法:
const data={"carList":[ {"brand":[{"model": [{ "motor": { "id": 1 }, "color": 10 }, { "motor": { "id": 2 }, "color": 20 }, { "motor": { "id": 3 }, "color": 30 }, { "motor": { "id": 4 }, "color": 40 }]}, {"model": [{ "motor": { "id": 1 }, "color": 11 }, { "motor": { "id": 2 }, "color": 22 }, { "motor": { "id": 3 }, "color": 33 }, { "motor": { "id": 4 }, "color": 44 }]} ]}, {"brand":[{"model": [{ "size": 400 }]}, {"model": [{ "size": 401 }]}]}, {"brand":[{"model": [{ "size": 500 }]}]} ]} const [mo,si]=["motor","size"].map(p=>data.carList.filter(e=> e.brand.find(b=>b.model.find(m=>m[p])))); console.log(JSON.stringify(mo)); console.log(JSON.stringify(si));
我現在將代碼片段應用於更新的數據。 結果 arrays motor
和sizes
是通過對data
數組應用.filter()
計算得出的。
在這個更新版本的腳本中,如果mo
或si
數組以某種方式包含屬性motor
或 size`,我會為它分配一個brand
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.