本文介绍了通过重复键合并数组的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
尝试合并json
数组的重复键并以csv
格式构建各自的值.
Trying to merge duplicate keys of json
array and build respective values in csv
format.
A=[{a:1,b:2},{a:1,b:1},{a:1,b:6},{a:2,b:5},{a:2,b:3}]
尝试进行转换
A=[{a:'1',b:'2,1,6'},{a:2,b:'5,3'}]
我尝试过的代码
var existingIDs = [];
A= $.grep(A, function (v) {
if ($.inArray(v.a, existingIDs) !== -1) {
return v.b+= ',';
}
else {
existingIDs.push(v.a);
return true;
}
});
输出类似于
A=[{a:1,b:2},{a:1,b:'1,'},{a:1,b:'6,'},{a:2,b:5},{a:2,b:'3,'}]
推荐答案
使用a
中的1
,2
等作为键创建一个临时对象,并继续添加b
值,然后对其进行迭代创建新数组的对象:
Create a temporary object with 1
, 2
etc from a
as keys and keep adding on the b
values, then iterate over that object creating the new array :
var A = [{a:1,b:2},{a:1,b:1},{a:1,b:6},{a:2,b:5},{a:2,b:3}];
var temp = {};
for (var i=0; i<A.length; i++) {
temp[A[i].a] =
temp[A[i].a] === undefined ?
A[i].b :
temp[A[i].a] + ',' + A[i].b;
}
A = [];
for (var key in temp) {
A.push({a: key, b:temp[key]})
}
这篇关于通过重复键合并数组的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!