映射道具对象数组减少(求和)React中对象中的值

Mapping array of props objects reduce(sum) values in objects in React

我有多个道具对象并将它们传递到一个数组中。 每个对象都包含点值。我正在尝试对对象中的所有值求和并将结果传递给 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() 对所有值求和。结果显示

所以我添加了 parsInt() 默认数字设置为 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"} />

是否有正确的解决方案?谢谢。

关于你的 reduce 函数的一些事情:

  • reduce 应该只解析当前值
  • parseInt 应该将基数作为第二个参数传递以强制进行十进制解析
  • reduce应该传入初始值作为第二个参数

-

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