JSON格式提取相同属性的某个值,如何做?
[ {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 和 脚本之家