2015-08-25 19 views
0

我需要在程序結束時輸出兩個數組。如何加倍數組中的其他元素?

第一個數組是用戶輸入的內容。第二個數組應複製第一個元素,並用其double元素替換每個其他元素。假設用戶將「1,2,3,4,5」保存到第一個陣列。第二個陣列應具有:「1,,3,,5」。

這是我到目前爲止。

頭標籤

function toDouble(modArray) 
{ 
    var modified = new Array(); 
    for(var i = 1; i < modArray.length; i+=2) 
    { 
     modified.push(modArray[i] * 2); 
    } 
return modified; 
} 

BODY標籤

var origArray = new Array(); 
var modArray = new Array(); 
while() //ignore the while loop part; it is working fine 
{ 
    origArray = parseInt(prompt("Enter a number: ")); 
    document.write(origArray); //output 1 
    modArray.push(origArray); 
} 
var modified = toDouble(modArray); 
document.write(modified); //output 2 

我僅接收一倍號碼,而不是整個陣列。例如,如果我輸入「1,2,3,4,5」,我只能得到「4,8」作爲輸出。

我該如何解決這個問題?先謝謝你!

+0

待辦事項你期望「2,4,6,8,10」的「1,4,3,8,5」? – Alfabravo

回答

0

另一種解決方案考慮原陣列

只備用元素像這樣做: -

function toDouble(modArray) { 
    for (var i = 1; i < modArray.length; i+=2) { 
     modArray[i] *= 2; 
    } 
    return modArray; 
} 
+1

請記住,這是_modifies_的源數組。 – Cerbrus

2

你只需要對你的代碼的一些變化:

function toDouble(modArray) { 
 
    var modified = modArray.slice(0); // copy the whole `modArray` 
 
    for(var i = 1; i < modified.length; i+=2) { 
 
     modified[i] *= 2; // replace the value at `i`, for every other number. 
 
    } 
 
    return modified; 
 
} 
 

 
var a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 
 
    b = toDouble(a); 
 

 
alert(JSON.stringify(b));

0
function toDouble(modArray) 
{ 
    var modified = new Array(); 
    for(var i = 1; i < modArray.length; i+=2) 
    { 
     modified.push(modArray[i-1]); 
     modified.push(modArray[i] * 2); 
    } 

    if(modified.length < modArray.length) 
     modified.push(modArray[modArray.length - 1]); 
    return modified; 
} 
+0

試試這個:'[1,2,3]'。結果將返回檢查之前'[1,4]' – Cerbrus

+0

如果數組是相同的長度,如果不推動最後一個元素... – MozzieMD

+0

這是你的答案,你應該修復它... – Cerbrus

0
function toDouble(modArray) { 
    var modified = new Array(); 
    for (var i = 0; i < modArray.length; i++) { 
     if (i % 2 == 0) 
      modified.push(modArray[i]); 
     else 
      modified.push(modArray[i] * 2); 
    } 
    return modified; 
} 

例子:

var a = [1, 2, 3, 4, 5] 

toDouble(a); // output: [1, 4, 3, 8, 5] 
0

前面已經解釋過這個問題什麼時候要創建新的數組您使用Array.map()

function toDouble(modArray) { 
 
    return modArray.map(function(val, i) { 
 
    return i % 2 == 0 ? val : val * 2; 
 
    }) 
 
} 
 

 

 
var modArray = new Array(), 
 
    origArray; 
 
while (modArray.length < 5) //ignore the while loop part; it is working fine 
 
{ 
 
    origArray = parseInt(prompt("Enter a number: ")); 
 
    modArray.push(origArray); 
 
} 
 

 
snippet.log('modArray: ' + modArray) 
 
var modified = toDouble(modArray); 
 
snippet.log('Result: ' + modified)
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> 
 
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

+0

當你添加的代碼獲取數據_into_代碼片段,並從代碼片段獲得結果時,比代碼片段本身更長,我認爲你應該重新評估你的優先級... – Cerbrus

+0

@Cerbrus抱歉.. 。沒有得到你 –

+0

我的意思是:實際回答問題的代碼是5行。然後你添加_13_不相關的代碼行來處理/輸出。伊莫,這有點過分。 – Cerbrus

相關問題