@SeventimeSsS

Как добавить элементам массива свойства в зависимости от условия?

Есть массив:

const arr = [
  {name: 'А'},
  {code: 1, name: 'Адыгея, Респ.', capital: 'Майкоп'},
  {code: 104, name: 'Азербайджан', capital: ''},
  {name: 'Б'},
  {code: 2, name: 'Башкортостан, Респ.', capital: 'Уфа'},
  {code: 105, name: 'Беларусь', capital: ''},
  {name: 'В'},
  {code: 33, name: 'Владимирская обл.', capital: 'Владимир'},
  {code: 34, name: 'Волгоградская обл.', capital: 'Волгоград'},
  {code: 35, name: 'Вологодская обл.', capital: 'Вологда'},
]

Нужно перебрать все элементы массива и добавить новые параметры в зависимости от условия.

По итогу он должен выглядеть так:

[
  {name: 'А'},
  {code: 1, position: 'top', name: 'Адыгея, Респ.', capital: 'Майкоп'},
  {code: 104, position: 'botttom', name: 'Азербайджан', capital: ''},
  {name: 'Б'},
  {code: 2, position: 'top', name: 'Башкортостан, Респ.', capital: 'Уфа'},
  {code: 105, position: 'bottom', name: 'Беларусь', capital: ''},
  {name: 'В'},
  {code: 33, position: 'top', name: 'Владимирская обл.', capital: 'Владимир'},
  {code: 34, position: 'center', name: 'Волгоградская обл.', capital: 'Волгоград'},
  {code: 35, position: 'bottom', name: 'Вологодская обл.', capital: 'Вологда'},
]
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
@StiflerProger
const arr = [
  { name: "А" },
  { code: 1, name: "Адыгея, Респ.", capital: "Майкоп" },
  { code: 104, name: "Азербайджан", capital: "" },
  { name: "Б" },
  { code: 2, name: "Башкортостан, Респ.", capital: "Уфа" },
  { code: 3, name: "Таганрог", capital: "" },
  { code: 5, name: "Сочи", capital: "" },
  { code: 105, name: "Беларусь", capital: "" },
  { name: "В" },
  { code: 33, name: "Владимирская обл.", capital: "Владимир" },
  { code: 34, name: "Волгоградская обл.", capital: "Волгоград" },
  { code: 35, name: "Вологодская обл.", capital: "Вологда" }
];

for (let i = 0; i < arr.length; i++) {
  if (!arr[i].code) continue;

  if (!arr[i - 1].code) {
    arr[i].position = "top";
  } else if (i + 1 === arr.length || !arr[i + 1].code) {
    arr[i].position = "bottom";
  } else {
    arr[i].position = "center";
  }
}

console.log(arr);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@justmavi
Software Development Engineer at Softconstruct
const filteredArray = array.map((item) => {
  if (condition1) position = 'value1';
  else if (condition2) position = 'value2';
  // ...
 
  return item;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы