那么我怎样才能对来自 react redux 的数组中所有对象的所有值求和呢?

So how can I sum all the values in all objects in an array which is coming from react redux?

这是 react redux reducer 文件,其中数字数组是:

const initialState = {
numbers: [ { name: 'max', num: 3 }, { name: 'jack', num: 2 } ]
}

这就是我想要对从 react redux state reducer 文件接收到的数字数组中所有对象的所有 num 值求和的方式

在组件中:

    useEffect(() => {
        const total = props.numbers.reduce((prev, current) => {
            return prev + current.num, 0;
        });
        console.log(total);
        console.log(props.numbers);
    }, []);

这是来自 useEffect 的控制台日志:

0

(2) [{…}, {…}]
0: {name: "max", num: 3}
1: {name: "jack", num: 2}
length: 2
__proto__: Array(0)

总的 const 只是 0,它不起作用。

那么如何对来自 redux reducer 文件的数组中所有对象的所有 num 值求和呢??

, 0 应该是 reduce 的第二个参数,而不是 return:

const total = props.numbers.reduce((prev, current) => {
  return prev + current.num;
}, 0);

您需要修复减少:

const total = props.numbers.reduce((prev, current) => {
     return prev + current.num;
}, 0);

你也可以使用map函数

sum = 0;
props.numbers.map(n => {
    sum+= n.num;
})

您需要为prev提供一个初始值作为reduce的第二个参数。如果没有提供,那么在第一个 运行 期间,回调函数的第一个参数是数组的第一个元素,回调函数的第二个参数是数组的第二个元素。然后将 return 值传递给第一个参数,下一个元素是第二个值。

所以,为了添加,我添加了 0 作为初始值。

const numbers =  [ { name: 'max', num: 3 }, { name: 'jack', num: 2 } ]

const total = numbers.reduce((prev, { num }) => {
    return prev + num
}, 0)

console.log(total)