2017-08-26 11 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 = Order_Items_${c.split_number}に対して1つの共通state.itemを作成します。

+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; 
}, {}); 

RESULT

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

そして、あなたは通常通りの値にアクセスすることができます

result.Order_Items_1 // [1,1] 

DEMO

+0

ありがとう...私はどのように私は各項目のsetStateを教えてくれますか? 「this.setState({item:item})」のようにします。それをmongo文書の別個のアイテムとして保管したい。 – Karthikeyan

+0

"const key =' Order_Items _ $ {c} ';" ---->その付与Order_items_ [Object Object] – Karthikeyan

+0

Order_Items _ $ {c} 'の前後にバッククォートがあるはずです。私のデモを見てください。これはテンプレートリテラルです。代替は 'const key =" Order_Items_ "+ c;' – Andy

関連する問題