2012-03-28 5 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

+0

グローバル変数です – draford

+0

このコードはce_infoに場所がないため、何もしません –

答えて

1

あなたはまだ

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

あなたのコード内でtypeOを持っているはずの場所ではなく、iChatのでinchatしますか?それはあなたがce_infoでさらにこの行の

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

をチェックするものであるため、そのコードのこの部分の結果は実行されませんinchatという名前の場所がありません。しかし、場所がインチであるce_infoの要素がどこにあるのかを知りたい場合は、その場所と名前をinch_info配列に追加する必要があります。

は、このループのためにあなたを変更

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

+0

編集済み答え、これはもっと必要なのですか? –

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

watについてabout変数** i **自体?もう1つの変数を使用する代わりに** inchat_count ** – mithunsatheesh

+0

それは私にthieのエラーを与えるUncaught TypeError:未定義の 'name'プロパティを設定できません – draford

+0

@mithunsatheesh私は 'i'変数も考えましたが、 'if'これはおそらく、 'ce_info'というエントリのすべてがコピーされないということを意味するので、別のカウント変数が必要です。 – Fabian

4

ネイティブJS配列のコピーは簡単です。 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_infoby 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); 
関連する問題