【问题标题】:How to create a new array of objects for each String Javascript/React?如何为每个 String Javascript/React 创建一个新的对象数组?
【发布时间】:2017-07-16 11:43:09
【问题描述】:

简历: 对于在多选字段中选择的每个值,调用一个函数并将该值添加到字符串中。我想要的只是将它作为对象添加到数组中。示例:

已选择 1 个选项:

Current:
"selected01"
Desired: 
[ { "value": "selected01"} ]

已选择 2 个选项:

Current: 
"selected01, selected02"
Desired:
[ {"value": "selected01"}, {"value":"selected02"}]

完整解释:

我有一个函数,它接收一个字符串并将其添加到状态值。示例:

handleSelectChange (value) {
    this.setState({ value })
}

假设您有一个包含三个选项的多选字段,然后选择其中两个。

它会调用:

onChange={this.handleSelectChange}

状态将是:

state.value: 'selected01, selected02'

如果您再选择一个:

state.value: 'selected01, selected02, selected03'

但是我想做的是拥有一个包含 3 个对象的数组:

Object: 
[
  {"value": "select01"},
  {"value": "select02"},
  {"value": "select03"}
]

查看所需输出的另一种方式(console.log):

state: [3]
  [0]: Object
  [1]: Object
  [2]: Object

有什么想法吗?

【问题讨论】:

  • this.setState(value.split(", "));
  • 也许我没有得到这个问题,但不会简单的 value.split(',') 解决问题?
  • 如果你想将该字符串转换为对象数组,关键是什么?如果你想转换成字符串数组然后使用split(','),你会得到['a', 'b', 'c']
  • 我看不到拆分将如何获取我的值并使用该值创建一个对象。所选字段正在添加到字符串中,我需要将其添加到新对象中。当前有一个选项:"selected01" 期望:[ { "selected01"} ]
  • @LucasOliveiraSilva 那个对象应该有密钥,你想要的密钥是[{key: 'selected01'}, {key: 'selected02'}]

标签: javascript arrays reactjs object data-structures


【解决方案1】:

答案是:

handleSelectChange (value) {
  this.setState({value})
  let valuesArr = value.split(',')
  let valuesArrObj = []
  valuesArr.forEach((val) => {
    valuesArrObj.push({
      [val]: val
    })
})

【讨论】:

    【解决方案2】:

    this.setState() 用于插入元素,this.getState() 用于获取元素

    任何信息请转到here

    【讨论】:

    • 这与我的问题无关。
    【解决方案3】:

    您可以调用 this.getState() 添加您的选择,然后执行 this.setState()。例如(使用 lodash https://lodash.com/docs/4.17.4#concat):

    this.setState(_.concat(this.getState(), { value }))
    

    【讨论】:

    • 方法有很多。我只提供了一种可能的示例解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2014-09-02
    • 1970-01-01
    • 2021-06-07
    • 2018-06-05
    • 2021-04-11
    相关资源
    最近更新 更多