【发布时间】:2015-12-17 12:36:35
【问题描述】:
我有两个长度不同的数组对象,其中data.rows 的长度为 955,place_names 的长度为 287。我在循环内运行循环,大约需要 3 分钟才能运行。有没有什么简单快捷的方法可以运行下面的代码?
for (i = 0; i < place_names.length; i++) {
for (j = 0; j < data.rows.length; j++) {
if (place_names[i].name === data.rows[j].name) {
geom.push(data.rows[j].st_asgeojson);
geom1.push({
name: data.rows[j].name,
geometry: data.rows[j].st_asgeojson
});
matched_average_value.push(place_names[i].average);
matched_sum_value.push(place_names[i].sum);
matched_minimum_value.push(place_names[i].minmum);
matched_maximum_value.push(place_names[i].maximum);
}
else {
console.log("no matches found");
}
}
}
【问题讨论】:
-
你可以试试这个并比较一下。但我认为这不会有太大的不同。小提琴:jsfiddle.net/xoowvcf9
-
是
i和j局部变量吗?您可以按名称对两个列表进行排序。 -
@Haketo,排序将经过另一个循环,对吗?但这不会是嵌套的。有点帮助!我想你也需要在某个地方打破一个循环。
if (place_names[i].name === data.rows[j].name)在这里? -
@RayonDabre 排序将允许在到达最后一个匹配项时停止内部循环,您可以在最后一个匹配项开始内部循环。
-
删除
console.log...你有它会导致多达274000+无意义的console.logs
标签: javascript for-loop nested-loops