2017-03-15 33 views
1

請幫助,我一直在尋找一個答案太長。
我試圖創建一個使用push方法到數字
0插入到10到通過你剛纔上面初始化的數字陣列的10位置0的數組。新手爲Javascript:如何總結數組中的具體數字

我這樣做:

var numbers = []; 
for(var i = 0; i < 10; i++) { 
    numbers.push(i); 
    console.log(numbers); 

,得到了這樣的結果,我認爲這是正確的,但不是100%肯定:

[ 0 ] 
[ 0, 1 ] 
[ 0, 1, 2 ] 
[ 0, 1, 2, 3 ] 
[ 0, 1, 2, 3, 4 ] 
[ 0, 1, 2, 3, 4, 5 ] 
[ 0, 1, 2, 3, 4, 5, 6 ] 
[ 0, 1, 2, 3, 4, 5, 6, 7 ] 
[ 0, 1, 2, 3, 4, 5, 6, 7, 8 ] 
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] 
0 

然後我通過打印來測試數組push方法數組總和 位置36(使用console.log()函數打印到控制檯)。 輸出的值應該是9

我很困擾這一點,無法找到任何地方如何做到這一點的示例。我想這可能是這樣的:

console.log(numbers(sum[3, 6]); 
+2

只需在位置'3'和'6'上添加元素:)'console.log(數字[3] +數字[6])''。 –

回答

-1

這將是:console.log((+numbers[3]) + (+numbers[6]));

通常情況下,它應該是console.log(numbers[3] + numbers[6]);但有時有導致36,而不是9中的問題,額外的+號告訴JavaScript代碼它是一個數字。

注意:請記住第一個數字是numbers[0]。數組以0開頭!

+0

非常感謝!我的結果是現在:[0] [0,1] [0,1,2] [0,1,2,3] [0,1,2,3,4] [0,1 2,3,4,5] [0,1,2,3,4,5,6] [0,1,2,3,4,5,6,7] [0,1,2, 3,4,5,6,7,8] [0,1,2,3,4,5,6,7,8,9] 0因此,它看起來像它的工作? –

0

如果你想有一個sum()函數,那麼請嘗試以下操作:

function sum(x, y) { 
    return x + y; 
} 

console.log(sum(numbers[3], numbers[6])); 

這裏有一個小提琴:https://jsfiddle.net/7181h1ok/

0

綜上所述陣列的兩個指數的值,可以使用用以下方式+加法運算符:

var numbers = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]; 
var sum = numbers[3] + numbers[6]; //adds the value in index 3 of the numbers array to the value in index 6 of the numbers array. 
console.log(sum); //prints the sum to the console. 

作爲一個說明,如果你不熟悉JavaScript和/或其運營商,有有用的文檔在w3schools,可以讓你開始。

+0

是的,我在w3shcols網站上。在很多網站上真的看過,無法找到我想要完成的一個樣本。該命令如何改變以對數組中的所有數字求和? –

+0

@AjaLee一個函數來彙總所有的數組的內容將創建一個變量(例如,'out')爲0的值,則通過陣列迭代,將每個元件與先前創建的變量,並最後返回那個變量。 它看起來像這樣: 'function sumArray(numArray){var out = 0; for(var i = 0; i GameGibu

0

首先,讓我們的代碼轉換爲一個稍微好一點的風格:

const numbers = []; 
 
for (let i = 0; i < 10; i++) { 
 
    numbers.push(i); 
 
    console.log(numbers); 
 
}

注:我做了numbers一個const代替var,因爲你不改變它。我還製作了i a let而不是var。一般來說,var是遺留的,不應該被使用。如有可能,請使用const,否則請使用let

另外,我在for關鍵字後插入了空格。通常建議使用空格將括起來的括號括起來,使其與控件結構關鍵字(if,while, for等)的標題分隔開,以使其與函數調用的參數列表的括號在視覺上不同沒有空間。

其次:您的結果是而不是正確。 (提示:0到10的數字有多少個數字?)它應該包含數字0到10,但它只包含0到9的數字。通常有一個稱爲的錯誤。處理試圖手動管理循環索引時,這些錯誤非常普遍。這是修復:

const numbers = []; 
 
for (let i = 0; i <= 10; i++) { 
 
//     ↑ 
 
    numbers.push(i); 
 
    console.log(numbers); 
 
}

大多數現代編程語言都有比在更高層次的抽象,如迭代器,地圖形式手動循環指數打交道更好的替代品,和褶皺。不幸的是,ECMAScript沒有Range數據類型,否則這可以簡單地表示爲將Range轉換爲Array

如果ECMAScript的確實Range數據類型,它可以例如像其中的一個:

const numbers = Range(0, 10).toArray() 
const numbers = Array.from(Range(0, 10)) 

下面是創建numbersArray的替代方案,不涉及手動管理循環指數,但仍需要知道0到10是11個數字:

const numbers = Array.from({length: 11}, (_, i) => i)

如果你想在指數3和6加數字,你可以簡單地取消引用索引3和6,並添加結果:

console.log(numbers[3] + numbers[6])

在評論,你問道如何將Array中的所有數字相加。結合使用二進制運算符集合的元素被稱爲foldreduce,並ECMAScript supports it out-of-the-box

console.log(numbers.reduce((acc, el) => acc + el));

注意怎麼沒有明確的循環,循環指數因此沒有明確的管理。在這裏做一個錯誤的錯誤是根本不可能的。