如何为每个String Javascript / React创建一个新的对象数组?

时间:2017-07-16 11:43:10

标签: javascript arrays reactjs object data-structures

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

选择了1个选项:

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

选择了2个选项:

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

完整说明:

我有一个函数,它接收一个String并将其添加到该值的状态。例如:

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

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

对插入元素使用this.setState(),对get元素使用this.getState()

获取任何信息here

答案 2 :(得分:0)

答案是:

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