@Sashjkeee
f-e

Как переименовать свойства в объекте?

Есть объект:

{
    "id": '',
    "name": ''
}

Нужно сделать:

{
    "value": '',
    "label": ''
}

Я написал так:

computed: {
...mapState({
      categories: state => state.main_page.NEWS
}),
getCategories() {
      let arr = [];
      let categories = this.categories;
      categories.forEach(function(obj) {
        obj['value'] = obj['id'];
        obj['label'] = obj['name'];
        delete obj['id'];
        delete obj['name'];
        arr.push(obj)
      })
      
      return arr
    }
}

Все работает, но при этом поменялся сам this.categories.
Как сделать так, чтобы в первоисточнике остались старые ключи и создавались объекты с новыми?
  • Вопрос задан
  • 3137 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
В дополнительном вычисляемом свойстве, которое у вас является просто ссылкой на массив в хранилище, необходимости нет - сразу создавайте новый массив, свойства элементов которого будут переименованы так, как вы сочтёте необходимым:

computed: {
  categories() {
    return this.$store.state.main_page.NEWS.map(n => ({
      value: n.id,
      label: n.name,
    }));
  },
},
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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