将一组数组中具有相同的某个属性的项提取出来,组成新数组的一项
var arr = [
{
id: 1,
name: "xiaoming",
schemeInfoId: "751"
},
{
id: 1,
name: "xiaolan",
schemeInfoId: "752"
},
{
id: 1,
name: "xiaozi",
schemeInfoId: "753"
},
{
id: 1,
name: "xiaohong",
schemeInfoId: "754"
},
{
id: 2,
name: "xiaohua",
schemeInfoId: "756"
},
{
id: 2,
name: "xiaozhang",
schemeInfoId: "757"
},
{
id: 3,
name: "xiaoli",
schemeInfoId: "757"
},
{
id: 3,
name: "xiaomei",
schemeInfoId: "757"
},
]
function arrayToMap(data) {
if (!data instanceof Array || data.length == 0) {
return {};
}
var map = {};
for (var i = 0; i < data.length; i++) {
if (!data[i] instanceof Array || data.length < 2) {
continue;
}
var id = data[i].id;
if (id != undefined) {
if (map[id] == undefined) {
map[id] = [];
}
map[id].push(data[i]);
}
}
return map;
}
//把map转成数组
function mapToArray(data) {
if (data == undefined) {
return [];
}
var array = [];
for (var p in data) {
array.push(data[p]);
}
return array;
}
var map = arrayToMap(arr);
var arrayList = mapToArray(map);
console.log(arr);
console.log(arrayList);