使用JavaScript reduce函数对数组进行排序
我经常研究一些JavaScript
面试问题,突然间我看到一个关于reduce
对an进行排序的功能的问题Array
,我在MDN中阅读了该问题,并在一些medium
文章中了解了它的用法,但是对an
Array
进行排序是如此创新:
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
?
最后,与其他排序算法相比,这种方法是否具有某些优势?或改进其他算法有用吗?
回答:
在此处使用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)
如果要将数组的值简化为 一个值或对象 。
以上是 使用JavaScript reduce函数对数组进行排序 的全部内容, 来源链接: utcz.com/qa/435157.html