2010-08-09 73 views
18

非常简单的事情,我试图在JS(将一个数组的值分配给另一个),但不知何故数组bar的值似乎并没有受到影响。从数组中填充另一个数组 - Javascript

我尝试的第一件事当然只是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

检查内容:HTTP://www.hardcode。nl/subcategory_1/article_414-copy-or-clone-javascript-array-object – 2010-08-09 07:25:28

+0

你可能已经发现了使用Firefox的Firebug插件指出的语法错误(“arr”vs“ar”)。我会尽可能地说,如果没有它,你无法正确地进行Javascript开发。 – 2010-08-09 07:27:10

+0

我没有做太多的JavaScript - 并且tbh我从来没有想过如何使用Firebug :(......指向我的几个很好的教程? – ina 2010-08-09 08:02:04

回答

42

您的代码不工作因为您未初始化bar

var bar = []; 

你也忘记声明你的i变量,这可能是有问题的,例如,如果代码在函数中,i将最终成为全局变量(总是使用var :)。

但是,你可以避开环路,只需使用slice方法来创建你的第一个数组的一个副本:

var arr = ["apple","banana","canaple"]; 
var bar = arr.slice(); 
+4

+1表示切片。 – 2010-08-09 07:28:50

+0

yes切片切片 - btw切片切片适用于多维数组? – ina 2010-08-09 07:31:28

+0

ina:看起来你可以使用一个小技巧!var bar = arr.concat (); – 2010-08-09 07:34:10

3

你有两个问题:

首先你需要初始化bar作为数组:

var bar = []; 

然后arrar在这里:

for(i=0;i<arr.length;i++){ 

然后你会得到提醒你的香蕉:)

+0

yup - 完全是这样,太习惯了php sloppiness,忘了声明数组!谢谢你是第一个回答! – ina 2010-08-09 08:01:33

1

您拼错变量AR 试试这个

for(i=0;i<ar.length;i++){ 
    bar[i]=ar[i]; 
} 
alert(ar[1]); 
+0

yes ty指针 - 这不是实际的代码,只是残酷的简化打字太快了一个jsfiddle – ina 2010-08-09 07:25:39

1

的问题可能在for循环语句中:

for(i=0;i<ar.length;i++){ 
    bar[i]=ar[i]; 
} 
alert(ar[1]); 

您需要修复ar.length而不是arr.length.并且最好将bar初始化为:var bar = []

1

在您的代码中,for循环中的变量arr与您的原始数组ar不一样:您有一个太多r