js根据属性分类
dealWithData=(data, attribute) => {
const arr = []
const obj = {}
data.forEach(element => {
if (!obj[element[attribute]]) {
arr.push({
attribute: element[attribute],
allData: [element],
})
obj[element[attribute]] = element
} else {
arr.forEach(ele => {
if (ele.attribute === element[attribute]) {
ele.allData.push(element)
}
})
}
})
return arr
}
举个例子
入参(根据paraConstraintType此属性分类)
var arr = [
{
"paraId": 68,
"paraName": "服务可用性",
"paraConstraintType": ">",
"paraConstraintValue": "100",
},
{
"paraId": 92,
"paraName": "终端数",
"paraConstraintType": "=",
"paraConstraintValue": "2000",
},
{
"paraId": 159,
"paraName": "用户下行体验速率",
"paraConstraintType": ">=",
"paraConstraintValue": "100",
},
{
"paraId": 160,
"paraName": "用户上行体验速率",
"paraConstraintType": ">",
"paraConstraintValue": "10000",
},
]
dealWithData=(data, attribute) => {
const arr = []
const obj = {}
data.forEach(element => {
if (!obj[element[attribute]]) {
arr.push({
attribute: element[attribute],
allData: [element],
})
obj[element[attribute]] = element
} else {
arr.forEach(ele => {
if (ele.attribute === element[attribute]) {
ele.allData.push(element)
}
})
}
})
return arr
}
var result = dealWithData(arr,'paraConstraintType')
document.write(JSON.stringify(result))
输出结果
[
{
"attribute": ">",
"allData": [
{
"paraId": 68,
"paraName": "服务可用性",
"paraConstraintType": ">",
"paraConstraintValue": "100"
},
{
"paraId": 160,
"paraName": "用户上行体验速率",
"paraConstraintType": ">",
"paraConstraintValue": "10000"
}
]
},
{
"attribute": "=",
"allData": [
{
"paraId": 92,
"paraName": "终端数",
"paraConstraintType": "=",
"paraConstraintValue": "2000"
}
]
},
{
"attribute": ">=",
"allData": [
{
"paraId": 159,
"paraName": "用户下行体验速率",
"paraConstraintType": ">=",
"paraConstraintValue": "100"
}
]
}
]
可以看到,已经按照传入属性分类。
根据(paraConstraintValue)分类
[
{
"attribute": "100",
"allData": [
{
"paraId": 68,
"paraName": "服务可用性",
"paraConstraintType": ">",
"paraConstraintValue": "100"
},
{
"paraId": 159,
"paraName": "用户下行体验速率",
"paraConstraintType": ">=",
"paraConstraintValue": "100"
}
]
},
{
"attribute": "2000",
"allData": [
{
"paraId": 92,
"paraName": "终端数",
"paraConstraintType": "=",
"paraConstraintValue": "2000"
}
]
},
{
"attribute": "10000",
"allData": [
{
"paraId": 160,
"paraName": "用户上行体验速率",
"paraConstraintType": ">",
"paraConstraintValue": "10000"
}
]
}
]