[{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 和 脚本之家
JSON格式提取相同属性的某个值,如何做?
原文地址:http://www.cnblogs.com/vali/p/7745980.html