我有一个多维javascript数组,里面充满了很多冗余数据,我希望这些数据按照自身内部的元素组合在一起......
// current array
pGroup = ([pm, name]); // [0][0] = pm0, [0][1] = name0 ... [n][0] = pmn, [n][1] = namen
我的目标是过滤掉所有冗余的pm,然后将这些名称分组到一个附加到各自名称的数组中。
我已经尝试了几个失败的$ .grep,$ .filter组合,并且使用了underscore.js修改了一些解决方案......但是到目前为止,我已经空了。< / p>
非常感谢对解决方案的任何指导。
编辑:
//当前数组
pGroup [
[0]
0: "Whimpenny, Walter"
1: "105495-005_SMS M&S Option Year 1"
,
[1]
0: "Whimpenny, Walter"
1: "105495-005_SMS M&S Option Year 2"
,
[2]
0: "Sukumar, Prasanna"
1: "DISA-JCSS/Staff Aug-SO #203868"
]
//请求结果
pGroup [
[0] 0: "Whimpenny, Walter" 1: ["105495-005_SMS M&S Option Year 1", "105495-005_SMS M&S Option Year 2"]
[1] 0: "Sukumar, Prasanna" 1: ["DISA-JCSS/Staff Aug-SO #203868" ]
]
答案 0 :(得分:3)
使用键入名称的对象对值进行分组。
var result_obj = {};
$.each(pGroup, function(i, e) {
var name = e[0], val = e[1];
if (result_obj[name]) {
result_obj[name].push(val);
} else {
result_obj[name] = [val];
});
然后将它们收集回阵列。
pGroup = [];
$.each(result_obj, function(i, e) {
pGroup.push([i, e]);
});
但是,我建议你不要在结果中使用多维数组。数组应该用于统一的有序集合。你的第二个维度不统一,应该是这样的对象:
$.each(result_obj, function(i, e) {
pGroup.push({name: i, values: e});
});
答案 1 :(得分:2)