2015-05-20 2 views
0

У меня есть простой Связанный список в моем проекте. В проекте используется underscore.js. Я пытаюсь придумать способ перебора связанного списка с использованием методов функционального программирования. В настоящее время у меня есть следующие:Итерация по связанному списку с использованием парадигмы функционального программирования

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

Есть ли способ осуществить выше в функциональной форме (с использованием underscore.js библиотеки)?

Заранее спасибо.

+0

Рекурсия FTW !! – Bergi

ответ

1

Не знаете, как подчеркнуть значение подчеркивания. На самом деле не представляется необходимым получить код функционального стиля.

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); 
Смежные вопросы