一个数据结构转换问题

2023-04-17  本文已影响0人  淡然7698
const a = ["a", "b"];
const b = [
  [1, 2, 3],
  [4, 5, 6],
];
// 目标结果
// const c = [
//   {
//     a: 1,
//     b: 4,
//   },
//   {
//     a: 2,
//     b: 5,
//   },
//   {
//     a: 3,
//     b: 6,
//   },
// ];

const aArray = ["a", "b", "c", "d"];
const bArray = [
  [1, 2, 3, 4], // aArray[0] a
  [5, 6, 7, 8], // aArray[1] b
  [9, 10, 11, 12], // aArray[2] c
  [13, 14, 15, 16], // aArray[3] f
];
// 目标结果
// const cArray = [
//   { a: 1, b: 5, c: 9, d: 13 },
//   { a: 2, b: 6, c: 10, d: 14 },
//   { a: 3, b: 7, c: 11, d: 15 },
//   { a: 4, b: 8, c: 12, d: 16 },
// ];

// 将aArray和bArray合并成cArray 两个数组的长度一致 且aArray的每一项都对应bArray的每一项
let cdict = {};
let alength = aArray.length; // 4
for (let index = 0; index < bArray.length; index++) {
  let bInnerArray = bArray[index]; // [1,2,3] [4,5,6]
  for (let j = 0; j < alength; j++) {
    let bInnerItem = bInnerArray[j]; // 1 2 3
    let aItem = aArray[index]; // a b c
    let cItem = {
      [aItem]: bInnerItem,
    };
    if (cdict[j]) {
      cdict[j] = {
        ...cdict[j],
        ...cItem,
      };
    } else {
      cdict[j] = { [aItem]: bInnerItem };
    }
  }
}
let cArray = Object.values(cdict); //转回数组
console.log("cArray", cArray);

上一篇 下一篇

猜你喜欢

热点阅读