Javascript 如何使数组中的其他元素加倍?

Javascript 如何使数组中的其他元素加倍?,javascript,arrays,Javascript,Arrays,我需要在程序结束时输出两个数组 第一个数组是用户输入的内容。第二个数组应该复制第一个数组的元素,并用它的double替换其他元素。假设用户将“1、2、3、4、5”保存到第一个数组中。第二个数组应该有:“1,4,3,8,5” 这是我到目前为止所拥有的 头牌 function toDouble(modArray) { var modified = new Array(); for(var i = 1; i < modArray.length; i+=2) { mo

我需要在程序结束时输出两个数组

第一个数组是用户输入的内容。第二个数组应该复制第一个数组的元素,并用它的double替换其他元素。假设用户将“1、2、3、4、5”保存到第一个数组中。第二个数组应该有:“1,4,3,8,5”

这是我到目前为止所拥有的

头牌

function toDouble(modArray)
{
   var modified = new Array();
   for(var i = 1; i < modArray.length; i+=2)
   {
      modified.push(modArray[i] * 2); 
   }
return modified;
}
我只收到加倍的数字,而不是整个阵列。例如,如果我输入“1,2,3,4,5”,我只得到“4,8”作为输出


我怎样才能解决这个问题?提前谢谢你

您只需对代码进行一些更改:

function toDouble(modArray){
var modified=modArray.slice(0);//复制整个“modArray”`
对于(变量i=1;i
函数到双(modArray)
{
var modified=新数组();
对于(变量i=1;i
如前所述,问题在于创建新数组时只考虑原始数组中的备用元素

另一个解决方案是使用

function toDouble(modArray){
返回modArray.map(函数(val,i){
返回i%2==0?val:val*2;
})
}
var modArray=新数组(),
奥利加里;
while(modArray.length<5)//忽略while循环部分;它工作得很好
{
origArray=parseInt(提示(“输入数字”);
modArray.push(origaray);
}
snippet.log('modArray:'+modArray)
var modified=toDouble(modArray);
snippet.log('Result:'+modified)

这样做:-

function toDouble(modArray) {
    for (var i = 1; i < modArray.length; i+=2) {
        modArray[i] *= 2;
    }
    return modArray;
}
function toDouble(modArray){
对于(变量i=1;i
你期望“2,4,6,8,10”中的“1,4,3,8,5”吗?试试这个:
[1,2,3]
。返回前,结果将是
[1,4]
,如果不推送最后一个元素,则检查数组的长度是否相同…当您添加的代码将数据放入代码段并从代码段中获取结果时,长度超过了代码段本身,我想您应该重新评估优先级…@Cerbrus抱歉。。。我的意思是:真正回答这个问题的代码有5行。然后添加13行无关代码来处理输入/输出。依我看,这有点过分了。@Cerbrus是的。。。在小提琴中,我最初用来测试它。。。我使用了一个静态数组。。。
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;
}
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]
function toDouble(modArray) {
    for (var i = 1; i < modArray.length; i+=2) {
        modArray[i] *= 2;
    }
    return modArray;
}