let arr = [
[
{
Chr: "字1",
Bj: "t",
},
{
Chr: "字2",
Bj: "th",
},
{
Chr: "字3",
Bj: "d",
},
],
[
{
Chr: "字1",
Sh: "p",
},
{
Chr: "字2",
Sh: "ph",
},
{
Chr: "字3",
Sh: "b",
},
],
[
{
Chr: "字1",
Nj: "g",
},
{
Chr: "字2",
Nj: "k",
},
{
Chr: "字3",
Nj: "h",
},
],
];
有多维数组 arr,其中每个元素中的对象的Chr是对应的,想通过筛选得到新的数组:
arr2 = [{ Bj: "t, th, d" }, { Sh: "p, ph, b" }, { Nj: "g, k, h" }];
请行家指教,谢谢!
arr.reduce((result, item) => {
var realKey = Object.keys(item[0]).filter(key => key != 'Chr')[0];
var temp = {}
temp[realKey] = item.reduce((t, i) => {
t.push(i[realKey]);
return t;
}, []).join(',');
result.push(temp)
return result;
}, [])
let arr2 = []
for(i = 0; i < arr.length; i++){
let va = {}
for(j = 0; j < arr[i].length; j++){
for(key in arr[i][j]){
if(key != 'Chr'){
if(va[key]){
va[key].push(arr[i][j][key])
}else{
va[key] = [arr[i][j][key]]
}
}
}
}
for(k in va){
va[k] = va[k].join(',')
}
arr2.push(va);
}
console.log(arr2)
console.log(JSON.stringify(arr2))
var arr2 = [];
for (var i =0;i<arr.length;i++){
var obj = {};
for (var j =0;j<arr[i].length;j++){
var ob = arr[i][j];
for (var k in ob){
if(k != "Chr"){
if (obj[k] == undefined){
obj[k] = ""
}
obj[k] += ob[k] + ","
}
}
}
obj[k] = obj[k].substring(0,obj[k].lastIndexof(','));
arr2.push(obj)
}
console.log(arr2);
我给同学们写过这篇文章 https://blog.csdn.net/xingyu_qie/article/details/127502753
应该跟你的题目思路想通