Как мне объединить массив с массивом объектов?

#javascript #arrays #object

#javascript #массивы #объект

Вопрос:

У меня есть массив объектов с именем Indicators и массив с именем Departments

Для каждого индикатора я должен добавить каждый отдел. Итак, если есть 4 отдела, должно быть 4 индикатора с одинаковым индексом, но с разными отделами. Как я могу этого добиться?

РЕДАКТИРОВАТЬ: вот мой код

      let arrDepartment = []
                         this.DepartmentIR.forEach(e=>{
                            arrDepartment.push(e.Department)
                         })
                     
                        this.RisksIndicatorsIR.forEach(e=>{   
                            let x = {...e}
                            x.Departments = arrDepartment    
                            console.log(x)
                        })
                    })
  

Комментарии:

1. Опубликуйте свое решение, которое вы пробовали в первую очередь.

2. Я опубликовал свой код. Спасибо.

3. Привет, cjdy13, я опубликовал 2 решения со всеми отделами по каждому индикатору и 1 решение только с 1 отделом по каждому индикатору. Пожалуйста, нажмите на зеленую галочку слева от upvote, если это вам помогло.

Ответ №1:

 const departments = [
  "department1",
  "department2",
  "department3",
  "department4"
];
const indicators = [
  { name: "indicators1", id: 95 },
  { name: "indicators2", id: 92 },
  { name: "indicators3", id: 93 },
  { name: "indicators4", id: 94 }
];

// Solution with forEach - all departments as key on each indicator
const newIndicators = [];
indicators.forEach((x) =>
  newIndicators.push({ ...x, departments: departments })
);

console.log("Solution with forEach", newIndicators);

// Solution with Reduce - all departments as key on each indicator
const newIndicatorsArr = indicators.reduce((acc, x) => {
  acc.push({ ...x, departments: departments });
  return acc;
}, []);

console.log("Solution with Reduce", newIndicatorsArr);

// Solution if you want 1 department per indicator
const oneDepartmentPerIndicator = indicators.reduce((acc, x, i) => {
  acc.push({ ...x, departments: departments[i] });
  return acc;
}, []);

console.log("Solution with 1 department per indicator", newIndicatorsArr);