js干貨 -- 處理數據(二維數組轉一維數組)


原數據 為以下格式:

 

var arr = [
        {
          name: "lili",
          proList: [
            { paramKey: "color", paramName: "顏色", paramsContent: '紅白綠' },
            { paramKey: "size", paramName: "尺寸",  paramsContent: '大小' },
          ],
        },
        {
          name: "hua",
          proList: [
            { paramKey: "volume", paramName: "體積",  paramsContent: '5,10,15' },
            { paramKey: "mass", paramName: "質量",  paramsContent: '1,2,3' },
          ],
        },
];

 var standardList = [
        { paramKey: "color", paramName: "顏色" },
        { paramKey: "mass", paramName: "質量" },
        { paramKey: "size", paramName: "尺寸" },
        { paramKey: "volume", paramName: "體積" },
 ]

 

現需求要把 arr.proList 中的數據按照 standardList 列表 中 順序處理, 沒有standardList 中的 paramKey 的添加上, paramsContent 為空即可

思考:

  • 如果通過數組的循環去處理會很麻煩,循環添加會有大量重復,故決定將數組轉成 對象
  • key為 paramKey,標准數組standardList 中 value 為paramName, 要處理的數據中 value 為 paramsContent

 

編寫處理函數

1 // 二維數組轉一維數組
2 dimensionReduction(obj, tKey, okey, cKey) {
3       for (var i = 0; i < obj[tKey].length; i++) {
4         var item = obj[tKey][i];
5         obj[okey][item["paramKey"]] = item[cKey];
6       }
7       return obj;
8  },

 

進行處理

1 arr.map((item) => {
2      item.proObj = {};
3      if (item.proList) {
4           this.dimensionReduction(item, "proList", "proObj", "paramsContent");
5      }
6  });
7 console.log(arr);

 

 

 

以上數據就滿足所需要的數據了

 

應用場景: 商品的比價

  不同商品之間比較的參數是不固定的,需要先取並集,然后按照並集順序補充參數,最后轉換成可以循環的參數

 

效果圖如下圖:

 

 

分享一刻:

proselint

一個命令行程序,用來檢查英文文章是否有語義錯誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM