从数组填充另一个数组 - Javascript

时间:2010-08-09 07:18:38

标签: javascript

我想在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/


(以上是一种简化。实际的数组是多维的。)

9 个答案:

答案 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;

它有效!