我正在考虑以更有效的方式解决这个问题。
我有一大堆整数
[170,158,147,139,134,132,133,136,141,.....]
我的计算阈值为132
& 137
我想要做的是修改我的数组中的任何数字< 132
要设置为其他值,例如100
。我的数组中的任何数字> 137
设置为不同的值150
。
写一篇蠢货很容易
for (i < array.length)
if(array[i] < 132)
array[i] = 100;
if(array[i] > 137)
array[i] = 150
但是对于我的阵列(20k +)的大小,拥有这么多ifs需要很长时间。
我需要保留数组的顺序,因此排序不适用于此。
也许某种类型的按位操作可以解决这个问题。
答案 0 :(得分:0)
试试这个,它可能会更快;
var given=[170,158,147,139,134,132,133,136,141,.....];
var result=given.map(x=> x<132 ? 100 : (x>137 ? 150 : x));
答案 1 :(得分:0)
我不确定你的for循环会发生什么,但是如果你使用常规for循环(即for (i=0; i < array.length; i++) {}
,它比使用for (i in array) {}
的速度要快得多。看看它的速度有多快正在使用长度为1,000,000的数组:
var bigData = [];
for (var i = 0; i < 1000000; i++) {
bigData[i] = i;
}
console.time('TEST1');
for (i=0; i < bigData.length; i++) {
if(bigData[i] < 132)
bigData[i] = 100;
if(i > 137)
bigData[i] = 150
}
console.timeEnd('TEST1');
console.time('TEST2');
for (i in bigData) {
if(i < 132)
i = 100;
if(i > 137)
i = 150
}
console.timeEnd('TEST2');