簡體   English   中英

如何將循環重寫為遞歸

[英]How to rewrite loop to recursion

我實現了搜索功能,並按集合循環搜索。 在第一個迭代中,我需要按所有集合進行搜索,但所有下一個迭代都只能按第一個迭代的結果進行搜索。 我使用if語句if (i >= 1) collection = result; 這樣做,但這並不安全,因為我需要保存集合。 是否可以將循環重寫為遞歸函數? 我該如何使代碼優雅?

var targets = target.split(' '); // => ['hello', 'world'];

for (var i = 0; i < targets.length; ++i) {
    if (i >= 1) {
        collection = result;
    }
    result = includes(collection, props, targets[i]);
}

我的搜索功能:

function includes(collection, props, target) {
    var result = [];
    var collection_length = collection.length;
    var props_length = props.length;
    var target_length = target.length;

    for (var i = 0; i < collection_length; ++i) {
        for (var j = 0; j < props_length; ++j) {
            if (collection[i][props[j]]) {
                if (collection[i][props[j]].toLowerCase().slice(0, target_length) === target) {
                    result.push(collection[i]);
                    continue;
                }
            }
        }
    }

    return result.length !== 0 ? result : false;
} 
var result = collection;
for (var i = 0; i < targets.length; ++i) {
    result = includes(result, props, targets[i]);
}

也許我缺少了一些東西,但這不是您要嘗試的嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM