javascript Array.reduce中参数的名称应该是什么?

2exbekwf  于 2023-02-18  发布在  Java
关注(0)|答案(4)|浏览(133)

作为代码可读性方面的最佳实践,在命名Array.reduce中的回调参数时,应使用以下哪种命名约定?
const studentAges= [15,16,14,15,14,20]

  • 通用

const sum = studentAges.reduce((accumulator,currentValue)=> accumulator +=currentValue,0);

  • 特定

const sum = studentAges.reduce((sum,age)=> sum+=age,0);

lawou6xi

lawou6xi1#

请参阅有关reduce参数及其顺序的文档。
第一个参数是accumulator,然后是currentValuecurrentIndexOptionalarray
至于命名约定,这取决于您以及您遵循或喜欢的任何编码标准。
我个人更喜欢你所说的generic approach,因为它在使用之间是一致的...但同样完全是个人喜好:)

7y4bm7vi

7y4bm7vi2#

你可以称它为accumulator,但由于accumulator的最终值是reduce函数的结果,你也可以称它为result,这使得我们更清楚地看到结果值。我更喜欢result,因为它有助于说明这一点,否则你必须记住...累加器是返回的内容。当然你也可以把结果重命名为你想从函数中得到的任何东西,所以这取决于什么使它更可读,我的pref是result,因为它也得到了每次迭代的结果。

mzsu5hc0

mzsu5hc03#

我有时候会使用混合方法,在accumulator变量名上加上acc,比如如果结果是一个数组,这样你就可以区分reduce中的accumulator和result,同时还能给两个变量名都增加意义。

const students = [{
    name: 'Joe',
    city: 'Wellington'
  },
  {
    name: 'Jane',
    city: 'Auckland'
  },
  {
    name: 'Jack',
    city: 'Auckland'
  },
  {
    name: 'Jenny',
    city: 'Wellington'
  },
  {
    name: 'James',
    city: 'Wellington'
  }
];

const wellingtonStudents = students.reduce((wellingtonStudentsAcc, student) => {
  if (student.city === 'Wellington') {
    wellingtonStudentsAcc.push(student);
  }
  return wellingtonStudentsAcc;
}, []);

console.log(wellingtonStudents);
syqv5f0l

syqv5f0l4#

我想这是一个偏好的问题,但我会选择通用的

const sum = studentAges.reduce((item,accumulator)=> accumulator +=item,0);

因为这里不需要特别说明,你将一个回调作为参数传递,正是你使用参数的方式而不是参数本身,使得回调特定于你的用法。

相关问题