簡體   English   中英

javascript 將數組分成兩個 arrays

[英]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 motorsizes是通過對data數組應用.filter()計算得出的。

在這個更新版本的腳本中,如果mosi數組以某種方式包含屬性motor或 size`,我會為它分配一個brand

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM