首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当其他数组传递给函数时,AS2数组会被更改?

当其他数组传递给函数时,AS2数组会被更改?
EN

Stack Overflow用户
提问于 2015-09-17 12:27:25
回答 1查看 48关注 0票数 0

我正在构建一个Othello人工智能,并且遇到了一个奇怪的AS2问题。

当将初始数组(Arr_temp)传递给函数(timesTen();)时,将其设置为等于返回函数的临时数组(Arr_nums)。

为什么它也会改变初始数组?

我能找到最简单的方法来重现我的问题:

代码语言:javascript
复制
arr_nums = [0,1,2,3,4,5,6,7,8,9,10];


timesTen = function(deltaArr){
    for(i = 0; i < deltaArr.length; i ++){
        deltaArr[i] *= 10;
    }
    return(deltaArr);
}


test = function(){
    arr_temp = timesTen(arr_nums);
    trace('temp: ' + arr_temp);
    trace('nums: ' + arr_nums);
}

test();

以上代码将跟踪以下内容:

代码语言:javascript
复制
temp: 0,10,20,30,40,50,60,70,80,90,100
nums: 0,10,20,30,40,50,60,70,80,90,100

首选跟踪:

代码语言:javascript
复制
temp: 0,10,20,30,40,50,60,70,80,90,100
nums: 0,1,2,3,4,5,6,7,8,9,10

即使我没有通过arr_nums和下面的变更测试,它也会生成相同的输出:

代码语言:javascript
复制
test = function(){
    arr_temp = arr_nums;
    arr_temp = timesTen(arr_temp);
    trace('arr_temp: ' + arr_temp);
    trace('arr_nums: ' + arr_nums);
}

两天来一直在拼命地尝试、测试和搜索,至今仍不知道出了什么问题,以及如何修复它?

任何想法都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-17 12:43:43

之所以会发生这种情况,是因为您实际上通过不使用原始数组的浅拷贝来修改它。

代码语言:javascript
复制
timesTen = function(deltaArr){
    var result = deltaArr.slice();

    for(i = 0; i < result.length; i ++){
        result[i] *= 10;
    }

    return result;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32630308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档