实际需求中总是遇到,后端给的一维数组需要转成一定的格式才能在业务中去使用或操作,下面是我常遇到的几种转化:
1、一维数组转json
初始数组:
const arr = [
{
classKey: "jblx",
classKeyName: "基本类型",
key: "contract_name",
name: "合同名称"
},
{
classKey: "jblx",
classKeyName: "基本类型",
key: "contract_name1",
name: "合同名称1",
},
{
classKey: "qsxx",
classKeyName: "签署信息",
key: "cust_credit",
name: "用电户社会信用代码"
},
{
classKey: "qsxx",
classKeyName: "签署信息",
key: "cust_credit1",
name: "用电户社会信用代码1"
},
]
转化成
{
jblx: [
{
classKey: "jblx"
classKeyName: "基本类型"
key: "contract_name"
name: "合同名称"
},
{
classKey: "jblx"
classKeyName: "基本类型"
key: "contract_name1"
name: "合同名称1"
}
],
qsxx: [
{
classKey: "qsxx"
classKeyName: "签署信息"
key: "cust_credit"
name: "用电户社会信用代码"
},
{
classKey: "qsxx"
classKeyName: "签署信息"
key: "cust_credit1"
name: "用电户社会信用代码1"
}
]
}
arr.forEach((item) => {
if (obj[item.classKey] == undefined) {
obj[item.classKey] = []
}
obj[item.classKey].push(item)
})
里面数组也想换成json的话:
arr.forEach((item) => {
if (obj[item.classKey] == undefined) {
obj[item.classKey] = {}
}
obj[item.classKey][item.key] = item
})
2、一维数组拆分成多维数组
上面初始数组转化成:
[
{
classKey: "jblx",
classKeyName: "基本类型",
data: [
{
key: "contract_name",
name: "合同名称"
},
{
key: "contract_name1",
name: "合同名称1"
}
]
},
{
classKey: "qsxx",
classKeyName: "签署信息",
data: [
{
key: "cust_credit"
name: "用电户社会信用代码"
},
{
key: "cust_credit1"
name: "用电户社会信用代码1"
}
]
}
]
let keys = [];
let newArr = [];
data.map((v)=>{
const data = {
name:v.name,
key:v.key
}
let index = keys.indexOf(v.classKey)
if (index>-1) {
newArr[index].data.push(data)
} else {
keys.push(v.classKey)
newArr.push({
classKey: v.classKey,
classKeyName: v.classKeyName,
data: [data],
})
}
})
console.log(newArr);
网友评论