0.根据某一字段处理数据为一个集合
// 源数据
const beforeData = [
{ name: "tony", id: "1", age: "20" },
{ name: "jack", id: "2", age: "21" },
{ name: "tony", id: "3", age: "50" },
{ name: "jack", id: "4", age: "10" },
{ name: "mark", id: "5", age: "22" },
{ name: "mark", id: "6", age: "40" }
]
// 期望数据
const data = [
{
name: 'jack',
data: [
{ name: "jack", id: "2", age: "21" },
{ name: "jack", id: "4", age: "10" },
]
},
{
name: 'tony',
data: [
{ name: "tony", id: "1", age: "20" },
{ name: "tony", id: "3", age: "50" },
]
},
{
name: 'mark',
data: [
{ name: "mark", id: "5", age: "22" },
{ name: "mark", id: "6", age: "40" }
]
}
]
// 处理操作
const afterData = [];
let tempArr = [];
for(let i = 0; i < beforeData.length; i++){
if(tempArr.indexOf(beforeData[i].name) === -1){
afterData.push({
name: beforeData[i].name,
data: [beforeData[i]]
});
tempArr.push(beforeData[i].name)
}else {
for(let j = 0; j < afterData.length; j++){
if(afterData[j].name === beforeData[i].name){
afterData[j].data.push(beforeData[i]);
break;
}
}
}
}
console.log(afterData, "afterData")
1.根据某一字段排序(升序)
// return -1 A 在 B 后
// return 1 A 在 B 前
// return 0 位置不变
beforeData.sort((firstItem,secondItem) => {
const nameA = firstItem.c_pihao.toUpperCase()
const nameB = secondItem.c_pihao.toUpperCase()
if(nameA < nameB) return -1
if(nameA > nameB) return 1
return 0
})