2011-05-31 29 views
-1

我有一些加工後推元素的關聯數組從另一個陣列,我做的事情是:推聯合數組錯誤?

for(var i in this.aNames) { 
    var a = this.aNames[i]; 
    // some processing on a 
    aList[i] = a; 
    aList.push(i); 
} 

但它不給我正確的陣列。

編輯:

這裏aNames是這樣

'1232':'asdasdasd', 
'6578':'dasdasdas' 
...... and so on of about 100 elements. 

的關聯數組我使用for這裏我想這樣做在陣列中的每個元素的一些變化。

然後我在頁面上顯示結果數組,但它顯示了鍵值和數組數據。

I.e.它應該只顯示asdasdasdasdasdasd,但它也顯示鍵,例如1232 asdasdasd 6578 dasdasdas

+1

我們可以猜測什麼是錯的,但我不會去打擾。如果它沒有給你「適當的陣列」,它給你什麼?是否有任何錯誤消息被報告?什麼是'這個'?什麼是'aNames'?爲什麼你沒有'hasOwnProperty'使用'for in'?什麼是'd'?什麼是'aList'? – Quentin 2011-05-31 10:58:08

+0

已編輯我的問題 – developer 2011-05-31 11:05:47

+0

沒有足夠的信息。 – gaRex 2011-05-31 11:27:49

回答

2

有許多東西可以去錯了...

首先,確保this指向正確的上下文和this.aNames真的返回一個複雜的對象(關聯數組)。

另外,什麼是aList?它是一個數組嗎?如果是,push應該在你的數組中添加當前成員的密鑰(成員的名字)。

如果要追加源對象的成員的值,你需要做的是這樣的:

在你for..in結構,你都將元素添加到一個所謂陣列(aList )與push,但也在你的數組上創建新成員(帶有下標符號,aList [i] =「asd」,因爲我在這種情況下(for..in iteration)引用成員的名字)。

所以,你需要做的是決定,如果你想成員添加元素的數組對象,不能同時使用。

如果您只想克隆數組,請使用for loop。另一方面,如果你想克隆一個對象,這並不是微不足道的,因爲成員也可以是包含自己成員的複雜對象,只要做arr[i] = obj.member將只複製指向arr[i]的指針,如果member是一個完整的對象,而不是一個值類型。


只是爲了確保我的術語是可以理解的:

var anObject = {name: "dreas"}, 
    anArray = [1,2,3]; 

    anObject["name"] <= member (results in "dreas") 
    anArray[1]  <= element (results in 2)