我想在JS中做一件非常简单的事情(将一个数组的值分配给另一个数组),但不知怎样,数组bar
的值似乎根本没有受到影响。
我尝试的第一件事当然只是bar = ar;
- 没有用,所以我尝试手动循环...仍然无效。
我不喜欢Javascript的怪癖!请帮忙!!
var ar=["apple","banana","canaple"];
var bar;
for(i=0;i<ar.length;i++){ bar[i]=ar[i]; } alert(ar[1]);
而且,这是小提琴:http://jsfiddle.net/vGycZ/
(以上是一种简化。实际的数组是多维的。)
答案 0 :(得分:50)
您的代码无效,因为您没有初始化bar
:
var bar = [];
您也忘了声明您的i
变量,这可能会有问题,例如,如果代码在函数内部,i
将最终成为全局变量(始终使用var
}:)。
但是,您可以通过使用slice
方法创建第一个数组的副本来避免循环:
var arr = ["apple","banana","canaple"];
var bar = arr.slice();
答案 1 :(得分:4)
copy-or-clone-javascript-array-object
var a = [ 'apple', 'orange', 'grape' ];
b = a.slice(0);
答案 2 :(得分:3)
你有两个问题:
首先,您需要将bar
初始化为数组:
var bar = [];
然后 arr
应该是ar
:
for(i=0;i<arr.length;i++){
然后你会收到你的香蕉警报:)
答案 3 :(得分:3)
在ES6中,您可以使用Array.from:
var ar = ["apple","banana","canaple"];
var bar = Array.from(ar);
alert(bar[1]); // alerts 'banana'
答案 4 :(得分:1)
你有拼写错误的变量ar 试试这个
for(i=0;i<ar.length;i++){
bar[i]=ar[i];
}
alert(ar[1]);
答案 5 :(得分:1)
问题可能出现在for循环语句中:
for(i=0;i<ar.length;i++){
bar[i]=ar[i];
}
alert(ar[1]);
您需要修复ar.length
而不是arr.length.
并最好将条形图初始化为:var bar = []
。
答案 6 :(得分:1)
在您的代码中,for循环中的变量arr
与原始数组ar
不同:您有太多r
。
答案 7 :(得分:0)
有了ES6
+,您可以简单地做到这一点
const original = [1, 2, 3];
const newArray = [...original];
答案 8 :(得分:0)
其实我已经试过了:
const original = [1, 2, 3];
const newArray = original;
它有效!