Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数组传递给Javascript中具有循环的函数_Javascript_Arrays_Function_Loops - Fatal编程技术网

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

将数组传递给Javascript中具有循环的函数,javascript,arrays,function,loops,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

我需要一个函数,基本上就是将数组的成员乘以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);
var a=[1,2,3];
函数toPts(数组){

对于(var i=0;i
a
作为其通过引用的传递在适当位置相乘,因此在函数之后(该函数
返回
s nothing)


您没有从函数返回任何内容, 您只需要在函数内返回修改后的数组(在循环完成执行后)

var a=[1,2,3];
函数toPts(数组){

for(var i=0;i默认情况下,函数在不返回任何内容时返回未定义。您的
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
var a=[1,2,3];
函数toPts(数组){

对于(var i=0;i您忘记返回数组。如果您只想修改现有数组,只需执行以下操作:

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]
函数顶级(数组){
var arr=array.slice(0);//将数组复制到新引用

对于(var i=0;i您需要返回数组,现在您只需修改现有的数组。如果这是一个巨大的数组,您是否也应该缓存array.length值?这并不是必需的,因为
.length
是一个属性,而不是调用时计算的值,因此它与存储在变量中相同。只有IE似乎从捕获数组le中受益Ngold wive的故事…你说得对。这看起来确实像是做了i--而不是i++etc节省了一点。看起来他想要一个新数组,而不是修改他当前的数组。@tbh_uuuuuuu接受的答案仍然引用同一个数组,所以它不是真正的“新”数组。
  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);
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
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]