使用函数式编程范式迭代链表

Iterating over Linked List using Functional programming paradigm

我的项目中有一个简单的链表。该项目使用 underscore.js。我正在尝试想出一种使用函数式编程技术遍历链表的方法。目前,我有以下内容:

while(cell.next) {
  nxt = cell.next;
  //check if next cell fulfills some condition. If condition is met,
  // loop breaks
}

有没有办法以功能方式实现上述内容(使用 underscore.js 库)?

提前致谢。

不确定下划线是如何影响的。获得函数式样式代码似乎不是必需的。

function doCell(c) {
    if (!c || your_condition_is_met)
        return c;
    return doCell(c.next);
}

var result = doCell(cell);

不确定结果应该是什么,所以我只是在满足条件的情况下返回当前单元格。


如果你愿意,你可以将其中的一些抽象成一个可重用的函数。

function nextWhile(v, callback) {
    if (!v || callback(v))
        return v;
    return nextWhile(v.next, callback);
}

然后像这样使用它:

var result = nextWhile(cell, function(cell) {
    return your_condition_is_met;
});

这让您可以创建可重复使用的函数。

function cell_is_something(cell) {
    return your_condition_is_met;
}

清理并记录您的代码。

var result = nextWhile(cell, cell_is_something);