日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS一维数组转化为三维数组有这个方法就够了

發布時間:2023/12/13 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS一维数组转化为三维数组有这个方法就够了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天在CSDN上問答區看到一個提問的小伙伴,是想要將一維數組轉化為三位數組的需求,正好不是很忙,樂于助人的我立馬給這位同學安排上

下面是后端同學返給我們的一維數組數據格式

[{'品牌': 'xiaomi', '機型': '10', '配置': '512'},{'品牌': 'xiaomi', '機型': '10', '配置': '128'},{'品牌': 'xiaomi', '機型': '11', '配置': '128'},{'品牌': 'xiaomi', '機型': '11', '配置': '64'},{'品牌': 'iPhone', '機型': '10', '配置': '128'},{'品牌': 'iPhone', '機型': '11', '配置': '64'},{'品牌': 'iPhone', '機型': '12', '配置': '64'},{'品牌': 'honor', '機型': '4', '配置': '256'},{'品牌': 'honor', '機型': '5', '配置': '128'},{'品牌': 'honor', '機型': '6', '配置': '128'}];

下面是我們想要轉化的數據格式(轉化成三維數組 第一層級為品牌、第二層級為型號、第三層級為配置)

[{"value": "xiaomi","label": "xiaomi","children": [{"value": "10","label": "10","children": [{"value": "512","label": "512"},{"value": "128","label": "128"}]},{"value": "11","label": "11","children": [{"value": "128","label": "128"},{"value": "64","label": "64"}]}]},{"value": "iPhone","label": "iPhone","children": [{"value": "10","label": "10","children": [{"value": "128","label": "128"}]},{"value": "11","label": "11","children": [{"value": "64","label": "64"}]},{"value": "12","label": "12","children": [{"value": "64","label": "64"}]}]},{"value": "honor","label": "honor","children": [{"value": "4","label": "4","children": [{"value": "256","label": "256"}]},{"value": "5","label": "5","children": [{"value": "128","label": "128"}]},{"value": "6","label": "6","children": [{"value": "128","label": "128"}]}]}]

首先我們定義一個arr變量接收我們的一維數組,然后將arr作為參數傳遞給我們轉化數組的函數,函數返回的就是我們最終的三維數組了

下面就是我們的arrConversion源碼

arrConversion (arr) {let keys = Object.keys(arr[0])let level1 = keys[0]//獲取一級屬性名稱let level2 = keys[1]//獲取二級屬性名稱let level3 = keys[2]//獲取三級屬性名稱let list = Array.from(new Set(arr.map(item => {return item[level1]})))let subList = []list.forEach(res => {arr.forEach(ele => {if (ele[level1] === res) {let nameArr = subList.map(item => item.value)if (nameArr.indexOf(res) !== -1) {let nameArr2 = subList[nameArr.indexOf(res)].children.map(item => item.value)if (nameArr2.indexOf(ele[level2]) !== -1) {subList[nameArr.indexOf(res)].children[nameArr2.indexOf(ele[level2])].children.push({value: ele[level3],label: ele[level3],})} else {subList[nameArr.indexOf(res)].children.push({value: ele[level2],label: ele[level2],children: [{value: ele[level3],label: ele[level3],}]})}} else {subList.push({value: res,label: res,children: [{value: ele[level2],label: ele[level2],children: [{value: ele[level3],label: ele[level3],}]}]})}}})})return subList}

輸出結果正確

?原創不易,希望大家多多支持!!!\textcolor{blue}{原創不易,希望大家多多支持!!!}

👍 點贊,你的認可是我創作的動力!\textcolor{green}{點贊,你的認可是我創作的動力!}

?? 收藏,你的青睞是我努力的方向!\textcolor{green}{收藏,你的青睞是我努力的方向!}

?? 評論,你的意見是我進步的財富!\textcolor{green}{評論,你的意見是我進步的財富!}

總結

以上是生活随笔為你收集整理的JS一维数组转化为三维数组有这个方法就够了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。