[
{UID:"222",value:"111"},
{UID:"222",value:"103"},
{UID:"123",value:"302"},
{UID:"123",value:"031"}
]
改成[
{UID:"222",value:"111,103"},
{UID:"123",value:"302,031"}
]
function handle(arr) {
var res = [],
obj = {},
index = 0;
arr.forEach(val => {
if (obj.hasOwnProperty(val.UID)) {
res[obj[val.UID]].value = res[obj[val.UID]].value + ',' + val.value;
} else {
obj[val.UID] = index++;
res.push({
UID: val.UID,
value: val.value
});
}
});
return res;
}
var arr = [{
UID: "222",
value: "111"
}, {
UID: "222",
value: "103"
}, {
UID: "123",
value: "302"
}, {
UID: "123",
value: "031"
}]
console.log(handle(arr))
思路:
1.创建一个新的数组存放结果
2.创建一个空对象
3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。
说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。
本文 转载自 segmengDefault 和 脚本之家