Как добавить один параметр для каждого объекта в массиве? - PullRequest
1 голос
/ 17 октября 2019

, поэтому у меня есть несколько случаев.

Добавить категорию к каждому объекту в массиве, который хранится в состоянии

Записи, являются массивом объектов (эти объекты являются статьями WordPress и имеют многопараметров)

Хранится в состоянии:

constructor(props) {
    super(props);
    this.state = {
      posts: [],
      postCategories: [],
    };
  }

Позже я получаю данные с других конечных точек (категории для каждого сообщения, с другой конечной точки)

      fetch(postsUrl)
        .then(data => data.json())
        .then(data => {
            this.setState({
               posts: data,
            })
            const postcategory = data.map((category) => category.categories)

            if (postcategory === 2)
            {
                console.log("category1" + postcategory)
            }
            if(postcategory === 3){
                console.log("category2" + postcategory)
            }
        })

postcategory - каждая категория из каждого сообщения (но это enum не строка (1,2,3 и т. Д.))

Мне нужно добавить параметр для каждого объекта в массиве - posts зависит от e.num (если в post [0] есть посткатегория 1, мне нужно ввести имя параметра: category , с содержимым в зависимости от enum.

например, для post [0]это postcategory = 2, поэтому мне нужно ввести имя параметра: категория со значением "category2"

Кроме того, решение должно включать все объекты в массиве - loop?

Ответы [ 2 ]

2 голосов
/ 17 октября 2019

Вы можете использовать map и spread для достижения этого

const result = array.map(item =>{
    if(condition1)
        return {...item, newProperty: 'foo'}

    if(condition2)
       return {...item, anotherProp: 'bar'}

    return item
})
1 голос
/ 17 октября 2019

Чтобы изменить данные, полученные из выборки, вы должны изменить данные внутри функции карты. Весь массив будет возвращен в newPostData, который затем можно установить в состояние.

fetch(postsUrl)
.then(data => data.json())
.then(data => {
  const newPostData = data.map(item => {
    if (item.categories === 2) {
      item.myNewValue = 'the new value if categories is 2';
    }
    if (item.categories === 3)
      console.log('Categories equals 3')

    return item
  }

  this.setState({posts: newPostData})
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...