Javascript-如何将此foreach循环转换为常规for循环?

时间:2014-07-17 20:26:32

标签: javascript loops foreach

这个嵌套循环在我的应用程序中运行速度非常慢所以我试图将其更改为使用常规for循环而不是foreach。我对find()部分有点困惑。有人可以帮我转换这个嵌套循环,以便它不使用任何foreach循环?感谢。

   var filters = [];
    if (selectionTagFilters.length > 0) {
        for (var i = 0; i < selectionTagFilters.length; i++) {
            filterTree.forEach(function find(tag) {
                if (tag.tagCategoryId == selectionTagFilters[i].tag.tagCategoryId) {
                    tag.tags.forEach(function find(tag) {
                        if (tag.tagId == selectionTagFilters[i].tag.tagId) {
                            filters.push({ tagHeader: tag.tagHeader, tagId: tag.tagId, tagCategoryId: tag.tagCategoryId });
                        }
                    });
                }
            });
        }
    }

1 个答案:

答案 0 :(得分:0)

var filters = [],
    selectionTagFilterItem = null,
    filterTreeItem = null,
    tagItem = null;
for(var i = 0, ii = selectionTagFilters.length; i < ii; i++) {
    selectionTagFilterItem = selectionTagFilters[i];
    for(var fti, ftii = filterTree.length; fti < ftii; fti++) {
        filterTreeItem = filterTree[fti];
        if (filterTreeItem.tagCategoryId != selectionTagFilterItem.tag.tagCategoryId) continue;
        for(var ti = 0, tii = filterTreeItem.tags.length; ti < tii; ti++) {
            tagItem = filterTreeItem.tags[ti];
            if (tagItem.tagId != selectionTagFilterItem.tag.tagId) continue;
            filters.push({ tagHeader: tagItem.tagHeader, tagId: tagItem.tagId, tagCategoryId: tagItem.tagCategoryId });
        }
    }
}