如何在javascript中更快地在循环内运行循环

时间:2015-12-17 12:36:35

标签: javascript for-loop nested-loops

我有两个不同长度的数组对象,其中SKSClab('proba','vector',6,1) 的长度为955,data.rows的长度为287.我在循环内运行循环,大约需要3分钟才能运行。有没有简单快捷的方法来运行下面的代码?

place_names

1 个答案:

答案 0 :(得分:0)

您有两个列表place_namesdata.rows。您感兴趣的字段是name字段。

根据您从何处获取此数据,最好为此使用字典:

var dict = {};
place_names.forEach(
    function(place_name) {
        dict[place_name.name]=place_name;
    }
);

现在,您可以遍历data.rows

data.rows.forEach(
    function(row) {
        if(row.name in dict) {
            var place_name = dict[row.name];
            // Do what needs to be done with "row" and "place_name"
        }
    }
);

这应该会将n^2算法缩减为n log n甚至n(根据JavaScript的字典索引复杂性,我不确定)。此解决方案假定所有place_names[i].name值都唯一。如果他们不是,那么您可能希望在place_names中存储所有匹配dict的列表。