【问题标题】:How to add one parameter to every object in array?如何为数组中的每个对象添加一个参数?
【发布时间】:2019-10-17 17:08:18
【问题描述】:

所以我有一些案例。

为数组中的每个对象添加类别,保持状态

posts,是对象数组(这些对象是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 - 每个帖子的每个类别(但它是枚举而不是字符串(1、2、3 等))

我需要为数组中的每个对象添加参数 - posts 取决于 e.num (如果 posts[0] 有 postcategory 1 我需要注入参数名称:category,内容依赖于枚举。

例如。对于 post[0] 它是 postcategory = 2 所以我需要注入参数名称:值为“category2”的类别

此外,解决方案应该包括数组中的所有对象 - 循环?

【问题讨论】:

    标签: arrays reactjs object


    【解决方案1】:

    您可以使用mapspread 来实现此目的

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

    【讨论】:

    • 哇,谢谢,它正在为每个对象添加参数,现在我将尝试将其与我的问题匹配:)
    • 好的,我将它应用到我的解决方案中并且它通常可以工作,现在我尝试使用条件解决问题
    • 如果你想发表另一个问题!
    • if(item.categories === 2), if(item.categories === 3) 这些条件没有为数组的每个对象添加参数名称
    • 你能发布另一个问题解释得更好吗?评论简直乱七八糟!
    【解决方案2】:

    要更改从 fetch 接收到的数据,您必须更改 map 函数中的数据。整个数组将返回到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})
    })
    

    【讨论】:

    • 你正在改变状态
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    相关资源
    最近更新 更多