JavaScript方法无法处理复制的数组

时间:2011-03-31 10:22:16

标签: javascript arrays

我无法弄清楚这里发生了什么......我正在尝试复制一个数组,然后随机播放并加入副本,但它只是没有合作。

我有一个JS文件,并在顶部初始化一个新数组:

var myArray = [];

在加载这个JS文件时,我从Facebook API中提取数据并将结果粘贴在myArray中并附带一些HTML。

然后我有一个函数,我调用按钮单击,从myArray创建一个新变量,然后连接并打印出div元素中的文本:

var namesList = myArray;
namesList.join('');
$('#my_div').text(namesList);

显然已经简化了,但前提是一样的。

我的问题是,数组没有像它应该的那样加入。它保持阵列形式,我尝试过的任何东西都没有解决这个问题。我也试过了:

var namesList = myArray.slice();

var namesList = myArray.slice(0);

无济于事。

但是:我可以在同一个函数中操作myArray而没有任何问题,并获得我需要的结果。问题是,我需要能够在每次调用函数时对数组进行洗牌,然后将其作为文本打印出来;这就是我首先复制它的原因。

对于我的生活,我无法弄清楚为什么这不起作用。我需要做的就是在我正在调用的函数范围内创建变量的副本,对其进行随机播放,连接并打印它。

我该如何解决这个问题?或者,有更好的替代?非常感谢提前!

3 个答案:

答案 0 :(得分:2)

那是因为namesList仍然是一个数组。 join()返回一个字符串,您应该使用它:

var namesList = myArray.join('');
$('#my_div').text(namesList);

答案 1 :(得分:2)

   namesList.join('');

这会加入数组然后抛出结果。你想要

   namesList = namesList.join('');

答案 2 :(得分:2)

join()方法返回字符串而不是修改数组引用 - 您需要将代码更改为:

var namesList = myArray;
namelist = namesList.join('');
$('#my_div').text(namesList);