2012-03-28 17 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++; 

    } 
} 

Ich versuche ce_info zu inch_info zu kopieren. Es scheint, als ob es nicht funktioniert.Es tritt ein Fehler, wenn ich versuche, ce_info zu inch_info zu kopieren Irgendwelche Gedanken?Wie man Array zu Array kopiert

+0

wo Sie die Variable initialisiert werden kann ** inchat_count **? – mithunsatheesh

+0

Es ist globale Variable Ich habe vergessen, es zu setzen – draford

+0

Dieser Code wird nichts tun, da es keinen Speicherort in der ce_info –

Antwort

1

Sie haben noch eine typeO in Ihrem Code

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

shouldnt Standort statt ichat inchat werden? Denn das ist es, was für Sie überprüfen in dieser Zeile

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

Weiterhin in ce_info gibt es keinen Ort inchat so das Ergebnis dieses Stück Code genannt wird nicht ausgeführt. Wenn jedoch ein Element in ce_info vorhanden ist, das die Position hat, dass dies der Code ist, müssen Sie dem inch_info-Array den Ort und den Namen hinzufügen.

Ihr in dieser for-Schleife ändern:

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

Ich möchte nur Name und URL in Zoll_Info kopieren Ich brauche nicht ein ganzes Array in Inch_info – draford

+0

Edited meine antwort, ist das mehr wie du brauchst? –

2

inchat_count uninitialized zu sein scheint.

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

wat über die Verwendung von Variable ** i ** selbst? Anstatt eine weitere Variable zu verwenden ** inhat_count ** – mithunsatheesh

+0

gibt es mir den Fehler Uncaught TypeError: Kann die Eigenschaft 'name' von undefined nicht setzen – draford

+0

@mithunsatheesh Ich dachte auch an die Variable 'i', aber es gibt eine 'if'-Anweisung , was bedeutet, dass wahrscheinlich nicht alle Einträge 'ce_info' kopiert werden, also brauchen wir eine andere Zählvariable. – Fabian

4

Das Kopieren eines nativen JS-Arrays ist einfach. Verwenden Sie die Methode Array.slice(), die eine Kopie eines Teils/des gesamten Arrays erstellt.

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

jetzt foo und bar sind 5-köpfigen Arrays von 'a', 'b', 'c', 'd', 'e'

0

jQuery verwenden Sie es erreichen können so leicht:

See a working demo here

folgenden jQuery-Code stellt sicher, dass Sie kein by reference Objekt von ce_info haben.

jQuery-Code:

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);