javascript中怎么将一维数组变为三维数组?本文就给大家共享一种转换规则,JS一维数组转化为三维数组有用这种方法就行了!
今日看到一个提出问题的小伙伴们,是想要把一维数组转化为三位二维数组的需要,恰好并不是比较忙,热心肠的我立刻给这位同学安排一下
下边是后端同学们返给大家的一维数组数据类型
[{
'知名品牌': '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
}
输出结果恰当
【相关信息:javascript学习教程】
以上就是关于javascript中怎么将一维数组变为三维数组?方式推荐的具体内容,大量欢迎关注AdminJS其他类似文章!