2012-03-28 102 views
0
var ce_info=[ 
{location:"inchannel",name:"Jae Jung",volume:"50",url:"img/jae.jpeg",group:1}, 
{location:"inchannel",name:"Houston",volume:"50",url:"img/houston.jpeg",group:1}, 
{location:"inchannel",name:"Jun kuriha..",volume:"50",url:"img/jun.jpeg",group:1}, 
{location:"inchannel",name:"Andrea Melle",volume:"50",url:"img/andrea.jpeg",group:0}, 
{location:"inchannel",name:"Tomoaki Ohi..",volume:"50",url:"img/ohira.jpeg",group:0}, 
{location:"inchannel",name:"Woosuk Cha..",volume:"50",url:"img/woosuk.jpeg",group:0}, 
{location:"inchannel",name:"Luca Rigaz..",volume:"50",url:"img/luca.jpeg",group:0}, 
{location:"inchannel",name:"SooIn Nam",volume:"50",url:"img/sooin.jpeg",group:0} 
]; 
var inch_info=[{location:"ichat",name:"",volume:"50",url:""}]; 

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

    if(ce_info[i].location=="inchat") 
    {  

     inch_info[inchat_count].name=ce_info[i].name; 
     inch_info[inchat_count].url=ce_info[i].url; 
     inchat_count++; 

    } 
} 

我试图将ce_info复制到inch_info。 它似乎不起作用。当我尝试将ce_info复制到inch_info时发生错误 有什么想法?如何将阵列复制到阵列

+0

你在哪里初始化变量** ** inchat_count? – mithunsatheesh 2012-03-28 07:25:43

+0

它是全局变量我忘了把它 – draford 2012-03-28 07:39:13

+0

这段代码不会做任何事情,因为没有位置inchat在ce_info – 2012-03-28 07:51:25

回答

1

你仍然在你的代码中的类型0

var inch_info=[{location:"ichat",name:"",volume:"50",url:""}]; 

不应该位置inchat代替的iChat?因为那是你在这一行

if(ce_info[i].location=="inchat") 

此外,在ce_info检查什么没有名为inchat所以这段代码的结果将不被执行的位置。但是,如果有位置的ce_info中的元素将成为代码,则需要将位置和名称添加到inch_info数组中。

在此更改您的for循环:

for(var eElem in ce_info) 
{ 
    if(ce_info[eElem].location=="inchannel") 
    { 
     var temp = {}; 
     temp.name=ce_info[eElem].name; 
     temp.url=ce_info[eElem].url; 
     inch_info.push(temp); 

    } 
} 
+0

我只是想复制名称和URL到inch_info我不需要复制整个数组到inch_info – draford 2012-03-28 07:31:37

+0

编辑我的答案,这是否更像你需要? – 2012-03-28 08:00:52

2

inchat_count似乎未初始化。

var inch_info=[{location:"icha",name:"",volume:"50",url:""}]; 
var inchat_count = 0; // You forgot this line!! 
for(i=0;i<ce_info.length;i++) 
{ 

    if(ce_info[i].location=="inchat") 
    {  

     inch_info[inchat_count].name=ce_info[i].name; 
     inch_info[inchat_count].url=ce_info[i].url; 
     inchat_count++; 

    } 
} 
+0

关于使用变量**我**本身?而不是使用一个更多的变量** inchat_count ** – mithunsatheesh 2012-03-28 07:31:43

+0

它给了我thie错误未捕获TypeError:无法设置未定义的属性'名称' – draford 2012-03-28 07:37:39

+0

@mithunsatheesh我也想到'我'变量,但有一个'if'语句,这意味着可能不是所有的条目'ce_info'都将被复制,所以我们需要另一个计数变量。 – Fabian 2012-03-28 08:40:38

4

复制原生JS Array很容易。使用Array.slice()方法创建数组的一部分/全部副本。

var foo = ['a','b','c','d','e']; 
var bar = foo.slice(); 

现在foo和bar是使用jQuery 'A', 'B', 'C', 'd', 'E'

0

的5个成员阵列可以这样容易实现它:

See a working demo here

以下的jQuery代码是为了确保你没有的ce_info一个by reference对象。

jQuery代码:

var inch_info= jQuery.extend(true, {}, ce_info); 

alert("inch_info: before changing text: "+inch_info[0].location); 

inch_info[0].location = "hello world" 

alert("inch_info: after changing text: "+inch_info[0].location); 
alert("ce_info: after changing text: "+ce_info[0].location);