2017-07-16 82 views
0

簡歷: 對於在多選字段中選擇的每個值,都會調用一個函數並將該值添加到字符串中。我只想將它作爲一個對象添加到數組中。選擇如何爲每個String Javascript/React創建一個新的對象數組?

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 

任何想法?

+0

這一點。 setState(value.split(「,」)); –

+0

也許我沒有得到這個問題,但不會有一個簡單的value.split(',')做伎倆? –

+0

如果你想將該字符串轉換爲對象數組,那麼鍵是什麼?如果你想轉換成字符串數組,然後使用'split(',')',你將得到'['a','b','c']' –

回答

0

答案是:

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

你可以調用this.getState()添加你的選擇,然後做一個this.setState()。例如(使用lodash https://lodash.com/docs/4.17.4#concat):

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

爲什麼lodash?爲什麼不this.getState.concat({值}); ?? –

+0

有很多方法。我只提供了一個可能的示例解決方案 – madnight

0

使用this.setState()的嵌件,並this.getState()對於GET元素

的任何信息去here

+0

這與我的問題無關。 –

相關問題