我经常研究一些JavaScript面试问题,突然间我看到一个关于reduce对an进行排序的功能的问题Array,我在MDN中阅读了该问题,并在一些medium文章中了解了它的用法,但是对an Array进行排序是如此创新:
JavaScript
reduce
Array
medium
const arr = [91,4,6,24,8,7,59,3,13,0,11,98,54,23,52,87,4];
我想了很多,但是我不知道该如何回答这个问题,reduce call back函数必须是什么?是什么initialValue的reduce功能?什么是accumulator和currentValue中call back的作用reduce?
call back
initialValue
accumulator
currentValue
最后,与其他排序算法相比,这种方法是否具有某些优势?或改进其他算法有用吗?
在此处使用reduce毫无意义,但是您可以使用新数组作为累加器并对所有元素进行插入排序:
array.reduce((sorted, el) => { let index = 0; while(index < array.length && el < array[index]) index++; sorted.splice(index, 0, el); return sorted; }, []);
这是 没有 reduce 的版本:
array.sort((a, b) => a - b);
现在写一些减速器的一般技巧:
reduce回调函数必须如何?
您要么采用累加器的方法,然后减速器应基于当前元素对累加器进行修改并返回:
(acc, el) => acc
或者,如果累加器和元素具有健全的类型并且在逻辑上相等,则无需区分它们:
(a, b) => a + b
reduce函数的initialValue是多少?
您应该问自己 “将空数组应用于返回值时应如何减少收益?”
现在最重要的是:何时减少使用?(IMO)
如果要将数组的值简化为 一个值或对象 。