Задать вопрос
@sw213

Как изменить айди в поле объекта?

надо помощь специалистов по джаваскрипту!
Есть данные, необходимо пройтись по data.pages
найти объект с айди, которое приходит (допустим 2) и поменять имя
структуру менять нельзя
уже всё голову сломал, как это можно сделать
const data = {
    pages: [
        {array1: [
            {id:1, name: 'ivan'},
            {id:2, name: 'egor'}
        ]},
        {array2: [
            {id:3, name:'vlad'},
            {id:4, name: 'petr'}
        ]}
    ]
}
  • Вопрос задан
  • 64 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
Решение в лоб самым понятным способом. Оптимизация будет на ваше усмотрение ))
const data = {
    pages: [{
        array1: [{
            id: 1,
            name: 'ivan'
        }, {
            id: 2,
            name: 'egor'
        }]
    }, {
        array2: [{
            id: 3,
            name: 'vlad'
        }, {
            id: 4,
            name: 'petr'
        }]
    }]
};

const id = 2;

function changeNameById(id, newName) {
    data.pages.forEach((page) => {
        Object.values(page).forEach((pageItem) => {
            const element = pageItem.find((item) => item.id === id);

            if (element) {
                element.name = newName;
            }
        });
    });
}

console.clear();

changeNameById(2, 'Valentin');
console.log(data);


{
  "pages": [
    {
      "array1": [
        {
          "id": 1,
          "name": "ivan"
        },
        {
          "id": 2,
          "name": "Valentin" // Изменённое имя
        }
      ]
    },
    {
      "array2": [
        {
          "id": 3,
          "name": "vlad"
        },
        {
          "id": 4,
          "name": "petr"
        }
      ]
    }
  ]
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
TheBeJIIHiu
@TheBeJIIHiu
Просто обычный кодер?
Пример:
spoiler
const idToFind = 2;
const newName = 'newName';

data.pages.forEach(page => {
  Object.values(page).forEach(array => {
    array.forEach(obj => {
      if (obj.id === idToFind) {
        obj.name = newName;
      }
    });
  });
});
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы