Javascript 在我的代码中有没有更有效的方法?

Javascript 在我的代码中有没有更有效的方法?,javascript,node.js,Javascript,Node.js,我必须改进我的函数,因为当arr或查询太大时,它会由于超时而终止。这是一个简单的函数,用于在长度为n的预定义数组中执行某些操作,查询定义了要在数组中执行的操作(arr) 查询的每一行表示范围(查询[i][0]是起始,查询[i][1]是arr[]的最终范围)。以及求和arr的值(查询[i][2])。因此,如果查询有三行,我们有三个操作要做。此函数返回此arr中的max元素 有什么东西可以改进这个代码吗 我认为Array(n).fill(0)和Math.max.apply(Math,arr)可能是问

我必须改进我的函数,因为当arr或查询太大时,它会由于超时而终止。这是一个简单的函数,用于在长度为n的预定义数组中执行某些操作,查询定义了要在数组中执行的操作(arr)

查询的每一行表示范围(查询[i][0]是起始,查询[i][1]是arr[]的最终范围)。以及求和arr的值(查询[i][2])。因此,如果查询有三行,我们有三个操作要做。此函数返回此arr中的max元素

有什么东西可以改进这个代码吗

我认为
Array(n).fill(0)
Math.max.apply(Math,arr)
可能是问题所在

否则,在while循环中,是否有某种方法可以执行一次验证和操作,而不是遍历数组并在每个元素上执行验证?谢谢

 function arrayManipulation(n, queries) {
    var a;
    var b;
    var k;
    var i = 0;
    var arr = Array(n).fill(0);
    while (queries[i] != undefined) {
        a = (queries[i][0] - 1);
        b = (queries[i][1] - 1);
        k = queries[i][2];
        for (a; a <= b; a++) {
            arr[a] = (arr[a] + k)
        }i++
    }
    k = Math.max.apply(Math, arr);
    return k
}
函数数组操作(n,查询){
var a;
var b;
var-k;
var i=0;
var arr=数组(n)。填充(0);
while(查询[i]!=未定义){
a=(查询[i][0]-1);
b=(查询[i][1]-1);
k=查询[i][2];

对于(a;a循环的每一次迭代,您都要在数组中重复相同的查找,
查询[i]
,四次:

    while (queries[i] != undefined) {
        a = (queries[i][0] - 1);
        b = (queries[i][1] - 1);
        k = queries[i][2];
//...
for
循环执行相同操作:

var query;
for (var i = 0, len = queries.length; i < len; i++) {
   query = queries[i];
   a = query[0] - 1;
   b = query[1] - 1;
   k = query[2];
// ...the rest of the loop
}
var查询;
for(var i=0,len=querys.length;i
何时停止while循环?错误从它开始,因为没有查询[i]的条件在循环中没有定义。你有一个小的例子和想要的结果吗?你可能想考虑。不是代码审查问题不在这里的主题,你可能会有更好的运气。@ LucasCosta应该停止当过冲数组LangTyeAh,现在我看到了,谢谢。