简易可变范围问题...... [英] Easy Variable Scope question...
问题描述
我应该是一个简单的范围问题。你可以帮我解决这个问题吗?
我想这样结束:
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屋!