2017-06-16 24 views
0

陣列中的

function range(start, end) { 
 
    var arr = []; 
 
    for (var i = start; i < end + 1; i += 1) 
 
     arr.push(i); 
 
    return arr; 
 
    function sum() { 
 
     arr.reduce(function (a, b) { 
 
      return a + b; 
 
     }, 0); 
 
    } 
 
}; 
 
console.log(range(5, 15)); 
 
console.log(sum());

有人能告訴我爲什麼我沒有得到的總和ARR .The總和保持返回

+0

你張貼的代碼提供運行時錯誤。你應該定義'範圍'外的'sum' – georg

回答

1

你總結函數不應嵌套到範圍函數中。 您和功能也應採取數組作爲參數,這裏是更新的代碼:

function range(start, end) { 
    var arr = []; 
    for (var i = start; i < end + 1; i += 1) 
     arr.push(i); 
    return arr; 
} 
function sum(arr) { 
    arr.reduce(function (a, b) { 
    return a + b; 
    }, 0); 
} 

var arr = range(5, 15); 
console.log(arr); 
console.log(sum(arr)); 
1

功能sum沒有在正確的範圍界定。

試試這個:

function range(start, end) { 
 
     var arr = []; 
 
     for (var i = start; i < end + 1; i += 1) 
 
      arr.push(i); 
 
     return arr; 
 
    
 
    }; 
 
    
 
    function sum(arr) { 
 
     return arr.reduce(function (a, b) { 
 
      return a + b; 
 
     }, 0); 
 
    } 
 
    console.log(range(5, 15)); 
 
    console.log(sum(range(5, 15)));

+0

仍然會出錯 – martin

+0

/home/marto/Desktop/func.js:246 arr.reduce(function(a,b)){ ^ TypeError:Object 2 has no方法'reduce' at sum(/home/marto/Desktop/func.js:246:9) at Object。(/home/marto/Desktop/func.js:48:13) at Module._compile( module.js:456:26) 在Object.Module._extensions..js(module.js:474:10) 在Module.load(module.js:356:32) 在Function.Module._load(模塊的.js:312:12) 在Function.Module.runMain(module.js:497:10) 在啓動時(node.js中:119:16) 在的node.js: 935:3 – martin

+0

這是什麼意思? @zenoo – martin

1

你可以試試這個:

function range(start, end) { 
    var arr = []; 
    for (var i = start; i < end + 1; i += 1) 
     arr.push(i); 
    return arr; 
} 

function sum(arr) { 
     return arr.reduce(function (a, b) { 
      return a + b; 
     }, 0); 
} 
var tmp1 = range(5, 15); 
console.log(tmp1); 
console.log(sum(tmp1)); 
0
var arr = []; 
function range(start, end) { 

    for (var i = start; i < end + 1; i += 1) 
     arr.push(i); 
    return arr; 

} 
function sum() { 
    return arr.reduce(function (a, b) { 
      return a + b; 
     }, 0); 
    } 
    console.log(range(5, 15)); 
    console.log(sum()); 
+0

我仍然得到這個錯誤:/home/marto/Desktop/func.js:246 返回arr.reduce(函數(a,b){ ^ TypeError:無法調用未定義的方法'reduce' – martin