javascript-如何使用Ramda从数组中获取偶数和奇数项
作者:互联网
我有以下内容:
var isEven = function (n) { return n % 2 === 0; }
var isOdd = function (n) { return n % 2 !== 0; }
var indexedList = function(fn, list) {
var array = [];
for (var i = 0; i < list.length; i++) {
if (fn(i)) {
array.push(list[i]);
}
}
return array;
}
有没有IndexedList的Ramda等效项,所以我可以只包含一个基于偶数索引的元素数组和一个基于奇数索引的元素数组.
解决方法:
Ramda的基于列表的功能默认情况下不处理索引.在某种程度上,这是因为它们中的许多更为通用,并且还可以与其他没有意义的数据结构一起使用.但是,有一种用于更改功能的标准机制,因此它们确实可以传递列表的索引:addIndex
.
因此,我对此的第一个想法是首先将isEven扩展到
var indexEven = (val, idx) => isEven(idx);
然后可以将addIndex与filter
和reject
一起使用,如下所示:
R.addIndex(R.filter)(indexEven, ['a', 'b', 'c', 'd', 'e']);
//=> ['a', 'c', 'e']
R.addIndex(R.reject)(indexEven, ['a', 'b', 'c', 'd', 'e']);
//=> ['b', 'd']
或者,如果一次要它们,则可以将其与partition
一起使用,如下所示:
R.addIndex(R.partition)(indexEven, ['a', 'b', 'c', 'd', 'e']);
//=> [["a", "c", "e"], ["b", "d"]]
如果愿意,您可以在Ramda REPL上看到此功能.
标签:ramda-js,javascript,functional-programming 来源: https://codeday.me/bug/20191027/1946348.html