简易可变范围问题...... [英] Easy Variable Scope question...

查看:51
本文介绍了简易可变范围问题......的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我应该是一个简单的范围问题。你可以帮我解决这个问题吗?


我想这样结束:

originalArray = [1,2,7]和newArray = [6,7,12]。


相反,我这样结束:

originalArray = [6,7,12]和newArray = [6, 7,12]。


这是我的代码:


var originalArray = [1,2,7]; / *我从表单中提取这个并希望

保持原样,但是函数修改它* /

var newArray = createNewArray(originalArray); / *我想结束

with newArray = [6,7,12] * /


function createNewArray(x){

for(var i = 0; i< x.length; i ++){x [i] + = 5}

返回x;

}


我也试过这个:


函数createNewArray(x){

var y = x;

for(var i = 0; i< y.length; i ++){y [i] + = 5}

返回y;

}


和这个:


var originalArray = [1,2,3];

var tmpArray = originalArray;

var newArray = createNewArray(tmpArray);


函数createNewArray(x){

for(var i = 0; i< x.length; i ++){x [i] + = 5}返回x;

}


所有具有相同的灾难性结果。


谢谢!


Mike

I have, what should be, a simple scope problem. Can you help me fix this?

I''m trying to end up like this:
originalArray = [1,2,7] and newArray = [6,7,12].

Instead I wind up like this:
originalArray = [6,7,12] and newArray = [6,7,12].

Here''s my code:

var originalArray = [1,2,7]; /* I''m pulling this from a form and want
to keep it as is, but the function modifies it */
var newArray = createNewArray( originalArray ); /* I want to wind up
with newArray = [6,7,12] */

function createNewArray( x ) {
for ( var i = 0; i < x.length; i++ ) { x[i] += 5 }
return x;
}

I''ve also tried this:

function createNewArray( x ) {
var y = x;
for ( var i = 0; i < y.length; i++ ) { y[i] += 5 }
return y;
}

and this:

var originalArray = [1,2,3];
var tmpArray = originalArray;
var newArray = createNewArray( tmpArray );

function createNewArray( x ) {
for ( var i = 0; i < x.length; i++ ) { x[i] += 5 } return x;
}

all with the same disasterous results.

Thanks!

Mike

推荐答案



Mike P写道:

Mike P wrote:
我有,应该是什么,一个简单的范围问题。你能帮我解决这个问题吗?

我想这样结束:
originalArray = [1,2,7]和newArray = [6,7,12]。

相反,我这样结束:
originalArray = [6,7,12]和newArray = [6,7,12]。

这里''我的代码:

var originalArray = [1,2,7]; / *我是从表单中提取这个并希望
保持原样,但函数修改它* /
var newArray = createNewArray(originalArray); / *我想结束使用newArray = [6,7,12] * /

函数createNewArray(x){
for(var i = 0; i< ; x.length; i ++){x [i] + = 5}
返回x;
}

我也试过了:

function createNewArray(x){
var y = x;
for(var i = 0; i< y.length; i ++){y [i] + = 5}
返回y;
}
这个:

var originalArray = [1,2,3];
var tmpArray = originalArray;
var newArray = createNewArray(tmpArray);

函数createNewArray(x){
for(var i = 0; i< x.length; i ++){x [i] + = 5}返回x;
}

所有相同的灾难结果。

谢谢!

Mike
I have, what should be, a simple scope problem. Can you help me fix this?

I''m trying to end up like this:
originalArray = [1,2,7] and newArray = [6,7,12].

Instead I wind up like this:
originalArray = [6,7,12] and newArray = [6,7,12].

Here''s my code:

var originalArray = [1,2,7]; /* I''m pulling this from a form and want
to keep it as is, but the function modifies it */
var newArray = createNewArray( originalArray ); /* I want to wind up
with newArray = [6,7,12] */

function createNewArray( x ) {
for ( var i = 0; i < x.length; i++ ) { x[i] += 5 }
return x;
}

I''ve also tried this:

function createNewArray( x ) {
var y = x;
for ( var i = 0; i < y.length; i++ ) { y[i] += 5 }
return y;
}

and this:

var originalArray = [1,2,3];
var tmpArray = originalArray;
var newArray = createNewArray( tmpArray );

function createNewArray( x ) {
for ( var i = 0; i < x.length; i++ ) { x[i] += 5 } return x;
}

all with the same disasterous results.

Thanks!

Mike




嗨Mike,


您非常接近解决方案,从上面的

获取您的解决方案之一并修改它如下工作:


函数createNewArray(x)

{

var y = new Array();


for( var i = 0;我< x.length; i ++)

{

y [i] = x [i] + 5

}


返回y;

}


var originalArray = [1,2,7];

var newArray = createNewArray(originalArray) ;


你错过了以下内容:


var y = new Array();


这是因为你引用了导致

问题的相同数组。如果您明确创建了一个新数组,那将解决您的问题。



Hi Mike,

You were very close to the solution, taking one of your solutions from
above and modified it as follows will work:

function createNewArray(x)
{
var y = new Array();

for (var i = 0; i < x.length; i++)
{
y[i] = x[i] + 5
}

return y;
}

var originalArray = [1, 2, 7];
var newArray = createNewArray(originalArray);

You were missing the following:

var y = new Array();

It was because you were referencing the same Array that was causing the
problem. If you explicitly created a new array, that will solve your
problem.


Mike P说:

我有,应该是什么,一个简单的范围问题。你能帮我解决这个问题吗?

我想这样结束:
originalArray = [1,2,7]和newArray = [6,7,12]。

相反,我这样结束:
originalArray = [6,7,12]和newArray = [6,7,12]。

这里''我的代码:

var originalArray = [1,2,7]; / *我是从表单中提取这个并希望
保持原样,但函数修改它* /
var newArray = createNewArray(originalArray); / *我想结束使用newArray = [6,7,12] * /

函数createNewArray(x){
for(var i = 0; i< ; x.length; i ++){x [i] + = 5}
返回x;
}

I have, what should be, a simple scope problem. Can you help me fix this?

I''m trying to end up like this:
originalArray = [1,2,7] and newArray = [6,7,12].

Instead I wind up like this:
originalArray = [6,7,12] and newArray = [6,7,12].

Here''s my code:

var originalArray = [1,2,7]; /* I''m pulling this from a form and want
to keep it as is, but the function modifies it */
var newArray = createNewArray( originalArray ); /* I want to wind up
with newArray = [6,7,12] */

function createNewArray( x ) {
for ( var i = 0; i < x.length; i++ ) { x[i] += 5 }
return x;
}




无论你怎么分配一个数组变量到另一个变量,

你只是分配对原始数组的引用。

你需要创建一个全新的数组:


函数createNewArray(x){

var y = new Array(x.length);

for(var i = 0; i< x.length; i ++){

y [i] = x [i] +5;

}

返回y;

}



No matter how you assign an array variable to another variable,
you are only assigning a reference to the original array.
You need to create an entirely new array:

function createNewArray(x) {
var y=new Array(x.length);
for(var i=0;i<x.length;i++) {
y[i]=x[i]+5;
}
return y;
}


谢谢......得到了它。


Mike
Thanks... got it :)

Mike


这篇关于简易可变范围问题......的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆