【问题标题】:Javascript array arrange parent and child as array?Javascript数组将父母和孩子排列为数组?
【发布时间】:2019-12-01 09:50:57
【问题描述】:

如何以数组格式创建嵌套子级的父级?子级将依赖于父级 ID,它们将作为“squads”键下的数组分组?

示例输入:

        let sample = [
          { tribe_id: 1, tribe_name: "Tribe A", squad_id: 1, squad_name: "Squad A" },
          { tribe_id: 1, tribe_name: "Tribe A", squad_id: 2, squad_name: "Squad B" },
          { tribe_id: 2, tribe_name: "Tribe B", squad_id: 3, squad_name: "Squad C" }
        ];
        console.log(sample);

期望的输出:

        let desiredFormat = [
          {
            tribe_id: 1, tribe_name: "Tribe A", squads: [
              {squad_id: 1, squad_name: "Squad A"},
              {squad_id: 2, squad_name: "Squad B"}
            ]
          },
          { 
            tribe_id: 2, tribe_name: "Tribe B", squads: [
              {squad_id: 3, squad_name: "Squad C"}
            ]
          }
        ];
        console.log(desiredFormat);

到目前为止我尝试了什么:

let origArray = sample;
let tempArray = [];
let finalArr = [];
for (let i = 0; i < origArray.length; i++) {
    tempArray.push({ tribe_id: origArray[i].tribe_id, tribe_name: origArray[i].tribe_name, squads: [ origArray[i].squad_id] });
}

for (let i = 0; i < tempArray.length; i++) {

    let uniqueTribeId = tempArray[i].tribe_id;

    for (let z = 0; z < origArray.length; z++) {
        if (uniqueTribeId == origArray[z].tribe_id) {
            finalArr.push( { tribe_id: uniqueTribeId, squads: [] });
        }
    }  
}

【问题讨论】:

标签: javascript


【解决方案1】:

我的工作解决方案:

let final = [];
let sample = [
  { tribe_id: 1, tribe_name: "Tribe A", squad_id: 1, squad_name: "Squad A" },
  { tribe_id: 1, tribe_name: "Tribe A", squad_id: 2, squad_name: "Squad B" },
  { tribe_id: 2, tribe_name: "Tribe B", squad_id: 3, squad_name: "Squad C" }
];
console.log(sample);

const uniqueTribes = sample.reduce((acc, current) => {
  const x = acc.find(item => item.tribe_id === current.tribe_id);
  if (!x) {
    // return acc.concat([current]);
    return acc.concat([{ "tribe_id": current.tribe_id, "tribe_name": current.tribe_name, "squads": [] }]);
  }
  return acc;
}, []);
// console.log(uniqueTribes);

for (let i = 0; i < uniqueTribes.length; i++) {

  let uniqueTribeName = uniqueTribes[i].tribe_name;
  let uniqueTribeId = uniqueTribes[i].tribe_id;

  for (let x = 0; x < sample.length; x++) {
    let squadName = sample[x].squad_name;
    let squadId = sample[x].squad_id;

    if (uniqueTribeId == sample[x].tribe_id) {
      // uniqueTribes[i].squads.push({ squad_id: sample[x].squad_id, squad_name: sample[x].squad_name });
      uniqueTribes[i].squads.push({ squad_id: squadId, squad_name: squadName });

    }
  }
  // let uniqueTribeId = sample[i].squad_name;
}
console.log(uniqueTribes);



let tribe = [];

// console.log(tribe);

let desiredFormat = [
  {
    tribe_id: 1, tribe_name: "Tribe A", squads: [
      {squad_id: 1, squad_name: "Squad A"},
      {squad_id: 2, squad_name: "Squad B"}
    ]
  },
  { 
    tribe_id: 2, tribe_name: "Tribe B", squads: [
      {squad_id: 3, squad_name: "Squad C"}
    ]
  }
];

【讨论】:

    猜你喜欢
    • 2020-03-30
    • 2012-11-19
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    相关资源
    最近更新 更多