2017-10-09 9 views
1

私は複数の小道具オブジェクトを持っていて、それらを配列に渡します。 各オブジェクトにはポイント値が含まれます。私はオブジェクト内のすべての値を合計し、その結果をSemantic-ui-react Statisticsコンポーネントに渡そうとしています。小道具オブジェクトの配列の配列は、反復のオブジェクトの値を減らす(合計)

const withoutSpousePointsArray = [ 
      withoutSpouseAgePoint, 
      withoutSpouseLoePoint, 
      withoutSpouseOlpPoint, 
      withoutSpouseOlp2Point, 
      withoutSpouseExpPoint, 
      BwithSpouseLoePoint, 
      BwithSpouseOlpPoint, 
      BwithSpouseExpPoint, 
      skillEducation1Point, 
      skillEducation2Point, 
      skillFwe1Point, 
      skillFwe2Point, 
      skillCertificatePoint, 
      additionalPoint, 
]; 
const mapStateToProps = state => ({ 
    // core withSpouse states 
    withSpouseAgePoint: state.withSpouseAge, 
    withSpouseLoePoint: state.withSpouseLoe, 
    withSpouseOlpPoint: state.withSpouseOlp, 
    withSpouseOlp2Point: state.withSpouseOlp2, 
    withSpouseExpPoint: state.withSpouseExp, 
    // core withoutSpouse 
    withoutSpouseAgePoint: state.withoutSpouseAge, 
    withoutSpouseLoePoint: state.withoutSpouseLoe, 
    withoutSpouseOlpPoint: state.withoutSpouseOlp, 
    withoutSpouseOlp2Point: state.withoutSpouseOlp2, 
    withoutSpouseExpPoint: state.withoutSpouseExp, 
    // Spouse factor 
    BwithSpouseLoePoint: state.BwithSpouseLoe, 
    BwithSpouseOlpPoint: state.BwithSpouseOlp, 
    BwithSpouseExpPoint: state.BwithSpouseExp, 
    // skill transferability factors 
    skillEducation1Point: state.skillEducation1, 
    skillEducation2Point: state.skillEducation2, 
    skillFwe1Point: state.skillFwe1, 
    skillFwe2Point: state.skillFwe2, 
    skillCertificatePoint: state.skillCertificate, 
    // Additional 
    additionalPoint: state.additional, 
}); 

私はすべての値を合計する最初のポイント値を.map().reduce()複数のオブジェクトがあるので。結果はthis

のように表示されたので、デフォルトの数値は0に設定されていますが、アクションをディスパッチすると、再び多くの0が表示され、数字が正しく加算されませんでした。

const withoutSpousePointSum = 
     withoutSpousePointsArray.map(points => points.point) 
     .reduce((acc, curr) => [parseInt(acc + curr)]); 

<Points key={shortid.generate()} color={"orange"} value={withoutSpousePointSum} label={"Points"} /> 

はこれを正しく動作させる解決策はありますか?ありがとうございました。あなたの軽減機能について

+0

マッピングプロセスを開始する時点で 'withoutSpousePointsArray'が正しく入力されていることを確認しましたか? – xDreamCoding

+0

@xDreamCodingすべての必要なオブジェクトが配列にあり、配列にオブジェクトを追加するには 'push()'を試行します。結果は同じです。あなたは配列のプロセスにオブジェクトを追加することによって意味したのは正しいですか? – MachoBoy

答えて

0

いくつかのこと:

  • reduceが第二のparamとしてのベースは小数点解析を強制的に通過しなければならないだけで、現在の値
  • parseIntを解析する必要があり
  • reduceが初期値で渡す必要があります第2パラメータとして

-

const withoutSpousePointSum = 
    withoutSpousePointsArray 
    .map(points => points.point) 
    .reduce((acc, curr) => acc + parseInt(curr, 10), 0); 
+0

この作品は魅力的です。また、ありがとうございます。 parse現在の値だけを解析します。知っておいてよかった。 – MachoBoy

関連する問題