2017-08-26 70 views
-1

我必須將相似的數字組合到一個數組中。例如:Javascript - 相同的數字組合並將其存儲在state.item中

var original_Order_Items=[1,1,2,3,3]; 

這是我的原始數組。但我必須分裂這個陣列像

Order_Items_1= [ 1, 1 ]; 
Order_Items_2 = [ 2 ]; 
Order_Items_3 = [ 3, 3 ]; 

並將其保存在3 this.state.item。任何人都可以幫助我解決這個問題。

e.preventDefault(); 
    var item = this.state.item; 
    var lines = item.order_items; 

    var lines = item.order_items.reduce((p, c) => { 
      const key = `Order_Items_${c.split_number}`; 
      p[key] = p[key] || []; 
      p[key].push(c) 
      this.setState({ item: item }) 
      this.props.create(this.state.item); 
      return p; 
     }, {}); 

能夠用上面的代碼分開order_items。現在,我想根據const key = Order_Items_${c.split_number}創建一個單獨的狀態;

我試着用this.setState({item:item})this.props.create(this.state.item);爲所有常見的const key創建一個common state.item = Order_Items_${c.split_number};

+0

什麼問題?有什麼不行嗎? – Andy

+0

是的,結果不正確。請找到正在使用的更新代碼。預期的結果是:Order_Items_1 = [1,1]; Order_Items_2 = [2]; Order_Items_3 = [3,3];取而代之的是:Order_Items_1 = [1]; Order_Items_2 = [2]; Order_Items_3 = [3]; – Karthikeyan

+0

你是什麼意思的「並將其保存在3 this.state.item」?你能提供一個你希望最終狀態看起來像什麼的例子嗎? –

回答

0

獲取該輸出的一種簡單方法是使用reduce來迭代數組,並使用這些屬性鍵名稱創建一個對象。這有一個好處,就是你不會創建很多單獨的變量。

var result = original_Order_Items.reduce((p, c) => { 
    const key = `Order_Items_${c}`; 
    p[key] = p[key] || []; 
    p[key].push(c) 
    return p; 
}, {}); 

結果

{ 
    "Order_Items_1": [1, 1], 
    "Order_Items_2": [2], 
    "Order_Items_3": [3, 3] 
} 

然後你就可以訪問值正常:

result.Order_Items_1 // [1,1] 

DEMO

+0

謝謝......你能告訴我如何爲每個項目設置狀態。像「this.setState({item:item})」一樣。想要將它作爲mongo文檔中的單獨項目存儲。 – Karthikeyan

+0

「const key ='Order_Items _ $ {c}';」 ---->給它Order_items_ [對象對象] – Karthikeyan

+0

''Order_Items _ $ {c}'應該有反引號。看我的演示。這是一個模板文字。替代方法是'const key =「Order_Items_」+ c;' – Andy

相關問題