我有以下 JavaScript 代码:
var postcodes = [['BD1',8],['BD2',20],['BD7',30]];
var rangeColours = [['red',10],['black',20],['blue',30]];
var postcodeColours = [];
for(var i=0; i<postcodes.length; i++) {
var match = 0;
for(var x=0; x<rangeColours.length; x++) {
if(postcodes[i][1] <= rangeColours[x][1] && match == 0){
postcodeColours.push([postcodes[i][0],rangeColours[x][0]]);
match = 1;
}
}
}
代码的输出是:(顺便说一下,这没问题)
[BD1,red][BD2,black][BD7,blue]
我想知道是否有一种方法可以使代码更高效,尤其是在减少第二个 for 循环中出现的浪费查找方面?目前,我正在使用“匹配”变量,如果邮政编码数组元素的值小于 rangeColours 数组元素的值,我将其设置为 1,以确保推送不会对每个邮政编码数组元素重复,是有更优雅的方法吗?
非常感谢
最佳答案
如果你真的想优化查找,你可以通过将其存储在本地
for(var i=0; i<postcodes.length; i++) {
var postcodeCurrent = postcodes[i];
var match = 0;
for(var x=0; x<rangeColours.length; x++) {
var rangeColourCurrent = rangeColours[x];
if(postcodesCurrent[1] <= rangeColoursCurrent[1] && match == 0){
postcodeColours.push([postcodesCurrent[0],rangeColoursCurrent[0]]);
match = 1;
}
}
}
不过,我不确定这是否会对性能产生显着影响。感觉像是微优化。
关于javascript - 优化 for 循环,避免无用的查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10506037/