简体   繁体   English

javascript 数组变为未定义

[英]javascript array turns to be undefined

Input: nums = [1,2,3,4] Output: [1,3,6,10] Explanation: Running sum is obtained as follows: [1, 1+2, 1+2+3, 1+2+3+4] .输入: nums = [1,2,3,4]输出: [1,3,6,10]解释:求和得到如下: [1, 1+2, 1+2+3, 1+2+3+4]

var runningSum = function(nums) {
    const array = new Array (nums.length);
    array[0] = nums[0];
    for( let i=1; i<nums.length; i++){
        array[i] = nums[i] + array[i-1]
    }
};

the result turns out to be undefine, I don't know where I did wrong.结果是未定义的,我不知道我哪里做错了。

You have to return the array你必须返回数组

so所以

var runningSum = function(nums) {
    const array = new Array (nums.length);
    array[0] = nums[0];
    for( let i=1; i<nums.length; i++){
        array[i] = nums[i] + array[i-1]
    }
    return array;
};

instead of代替

var runningSum = function(nums) {
    const array = new Array (nums.length);
    array[0] = nums[0];
    for( let i=1; i<nums.length; i++){
        array[i] = nums[i] + array[i-1]
    }
};

Here is another approach to solve the problem using recursion.这是使用递归解决问题的另一种方法。

 const nums = [1, 2, 3, 4]; const runningSum = (arr, result = [], sum = 0) => { if (arr.length === 0) return result; const tmp = sum + arr.shift(); result.push(tmp); return runningSum(arr, result, tmp); }; console.log(runningSum(nums));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM