多维数组中对象属性的提取与合并


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);

img


有帮助的话采纳一下哦!

我给同学们写过这篇文章 https://blog.csdn.net/xingyu_qie/article/details/127502753
应该跟你的题目思路想通