我无法弄清楚这里发生了什么......我正在尝试复制一个数组,然后随机播放并加入副本,但它只是没有合作。
我有一个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
而没有任何问题,并获得我需要的结果。问题是,我需要能够在每次调用函数时对数组进行洗牌,然后将其作为文本打印出来;这就是我首先复制它的原因。
对于我的生活,我无法弄清楚为什么这不起作用。我需要做的就是在我正在调用的函数范围内创建变量的副本,对其进行随机播放,连接并打印它。
我该如何解决这个问题?或者,有更好的替代?非常感谢提前!
答案 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);