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