gpt4 book ai didi

javascript - 以函数式方式遍历两个相邻元素的列表

转载 作者:行者123 更新时间:2023-11-28 17:46:49 24 4
gpt4 key购买 nike

我正在尝试实现以下代码的功能版本

 const adjacent = (list)  => {
let results = [];
for (let idx = 0; idx < list.length - 1; idx++) {
const computedRes = someComplexFn(list[idx], list[idx + 1]);
results.push(computedRes );
}
return results;
}

我有以下版本

const locations = [1,2,3,4,5];
const calcRatioFn = (x, y) => x+y;

const adjacentMap = (list, result=[]) => {
if(R.length(list) < 2) {
return result;
}
const f1 = R.head(list);
const f2 = R.tail(list);
result.push(calcRatioFn(f1 ,R.head(f2)));

return adjacentMap(R.tail(list), result);
}


const results = adjacentMap(locations);
console.log(results);

还有其他简单的解决方案吗?

我们可以避免上述函数的默认结果值参数和 if 条件检查吗?

JSBin 链接 http://jsbin.com/veyihepulu/1/edit?html,js,console

最佳答案

一种方法是使用 R.aperture 创建相邻元素的滑动窗口。然后为了一点额外的糖分,可以用 R.apply 包裹 someComplexFn将二元函数转换为接受两个元素的数组的函数。

您的示例将类似于:

const adjacentMap = R.pipe(R.aperture(2), (R.map(R.apply(someComplexFn))))

关于javascript - 以函数式方式遍历两个相邻元素的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46499815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com