js乾貨 -- 處理資料(二維陣列轉一維陣列)
阿新 • • 發佈:2020-08-17
原資料 為以下格式:
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);
以上資料就滿足所需要的資料了
應用場景:商品的比價
不同商品之間比較的引數是不固定的,需要先取並集,然後按照並集順序補充引數,最後轉換成可以迴圈的引數
效果圖如下圖:
分享一刻:
一個命令列程式,用來檢查英文文章是否有語義錯誤。