我需要一个基本上只是将数组成员乘以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]
答案 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