2012-03-28 179 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);