首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组排序更改curent和旧变量

数组排序更改curent和旧变量
EN

Stack Overflow用户
提问于 2015-01-10 03:28:05
回答 3查看 123关注 0票数 1

联合来文来源:

代码语言:javascript
复制
var c1 = ["Saab", "Volvo", "BMW"];
var c2=c1;
c1.sort();
document.getElementById("demo").innerHTML = '1 -> '+c1+'<br>2 -> '+c2;

结果:1 ->宝马,萨博,沃尔沃2 ->宝马,萨博,沃尔沃

我需要:1 ->宝马,萨博,沃尔沃2 ->萨博,沃尔沃,宝马

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-10 03:32:56

当你说

代码语言:javascript
复制
var c2=c1;

实际上,您正在使c2指向c1引用的同一个对象。然后更改c1数组对象。因为c2c1引用相同的对象,所以c1c2将打印相同的对象。

您需要复制Array对象。您可以使用c1.slice()这样做。

代码语言:javascript
复制
var c2 = c1.slice();

现在,c2引用c1数组的副本。因此,对c1所做的更改不会影响c2对象。

票数 2
EN

Stack Overflow用户

发布于 2015-01-10 03:31:51

这句话:

代码语言:javascript
复制
var c2=c1;

.不创建数组的副本,而是创建对同一个基础数组对象的第二个引用。因此,您通过任何一个变量所做的修改都会影响到相同的数组,无论是排序、添加元素还是其他什么。

幸运的是,创建数组的副本很容易:

代码语言:javascript
复制
var c2 = c1.slice();

method返回数组一部分的副本,如果不使用参数(或仅使用0的开始索引)调用它,则会复制整个数组。因此,c1c2变量将引用两个不同的数组,您可以在不更改另一个数组的情况下对其中一个数组进行排序或修改。

票数 2
EN

Stack Overflow用户

发布于 2015-01-10 03:34:47

只需使用片(0):

代码语言:javascript
复制
var c1 = ["Saab", "Volvo", "BMW"];
var c2=c1.slice(0);
c1.sort();
alert(c1);
alert(c2);

这里有一个样本:

http://jsfiddle.net/c3161930/

向你问好,费利佩

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

https://stackoverflow.com/questions/27872576

复制
相关文章

相似问题

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