将数组传递给在Javascript中具有循环的函数

时间:2014-10-28 17:37:58

标签: javascript arrays function loops

我需要一个基本上只是将数组成员乘以100的函数。数组成员的数量可能会改变。另外,我不能使用像array.prototype.map这样的东西 - 它必须是一个循环。

这是我到目前为止所得到的,但newArray以未定义的方式回归......我做错了什么?

var a = [1, 2, 3];

function toPts(array){
    for(var i=0; i<array.length; i++){
        array[i] *= 100;
    }
}

var newArray = toPts(a);

所需的最终结果是newArray = [100,200,300]

5 个答案:

答案 0 :(得分:2)

你忘了退回阵列。如果您只想修改现有的,只需执行以下操作:

toPts(a);
console.log(a) // [100,200,300]

如果你想要一个原始未触及的新阵列:

function toPts(array){
    var arr = array.slice(0); // copy array to new reference
    for(var i=0; i<arr.length; i++){
        arr[i] *= 100;
    }
    return arr;
}
var newArray = toPts(a);
console.log(newArray) // [100,200,300]
console.log(a) // [1,2,3]

答案 1 :(得分:0)

function toPts(array){
    for(var i=0; i<array.length; i++){
        array[i] *= 100;
    }
    return array;
}

你没有return阵列到外面。

但是,请注意您正在修改原始数组,因此将它放在两个变量中没有多大意义。

可能你要复制它:

function toPts(array){
    var newArray = array.slice();
    for(var i=0; i<newArray.length; i++){
        newArray[i] *= 100;
    }
    return newArray;
}
var a = [1, 2, 3],
    newArray = toPts(a); // `a` is not altered

答案 2 :(得分:0)

a在通过引用传递时就地相乘,所以在函数之后(return没什么)

toPts(a);
alert(a) // 100,200,300

答案 3 :(得分:0)

你没有从函数返回任何东西, 你只需要在函数内部返回修改后的数组(循环执行完毕后)

  var a = [1, 2, 3];

  function toPts(array){
   for(var i=0; i<array.length; i++){
    array[i] *= 100;
   }
return array;
 }
 var newArray = toPts(a);

答案 4 :(得分:0)

默认情况下函数返回undefined,当它没有返回任何内容时。你的a数组已经更改为结果数组。

var a = [1, 2, 3];

function toPts(array){
    for(var i=0; i<array.length; i++){
        array[i] *= 100;
    }
}

console.log(a);//this give you resulted output becuse array is passing as call by reference. so changes made in the same array