2011-04-19 131 views
0

如何從Javascript中的這個關聯數組中獲取值? 我只需要電子郵件地址而不是標籤。Javascript。從關聯數組中提取值

(
{ 
office = ("[email protected]"); 
home = ("[email protected]"); 
work = ("[email protected]"); 
}, 
{ 
home = ("[email protected]"); 
} 
) 

UPDATE:在JSON首選輸出爲:

{ 
    "data": [ 
     { 
      "email": "[email protected]" 
     }, 
     { 
      "email": "[email protected]" 
     }, 
     { 
      "email": "[email protected]" 
     }, 
     { 
      "email": "[email protected]" 
     } 

] }

感謝所有輸入!

回答

1

您可以通過對象 '的foreach' 得到它的屬性:

for(var j = 0; j < mySet.length; j++) 
{ 
    for(var propName in mySet[j]) 
    { 
     var emailAddress = mySet[j][propName]; 
     // Do Stuff 
    } 
} 
+0

上面的代碼(myObj)發生錯誤將其更改爲mySet,併發出emailAddress警報,但每個警報均爲空。哪裏不對? – 2011-04-19 18:54:14

+0

對不起,我弄亂了我的符號。我已經更新了它。 – Tejs 2011-04-19 18:57:34

+0

這一次它完美運作!謝謝!是否有可能將所有標籤重命名爲相同名稱,例如電子郵件而不是工作? – 2011-04-19 19:06:11

3

什麼,你可能是指做的是:

var x = [{ 
office: ("[email protected]"), 
home: ("[email protected]"), 
work: ("[email protected]") 
}, 
{ 
home: ("[email protected]") 
}] 

和:

for(var j = 0; j < x.length; j++) 
{ 
    for(var anItem in x[j]) 
    { 
     console.log(x[j][anItem]) 
    } 
} 

//編輯: 然而,it's not the best practice用於...英寸

也許你可以在你的數據結構變更爲:

var x = [[{ 
     value: "[email protected]", 
     type: "office" 
    }, 
    { 
     value: "[email protected]", 
     type: "home" 
    }, 
    { 
     value: "[email protected]", 
     type: "work" 
    }], 
    [{ 
     value: "[email protected]", 
     type: "home" 
    }]]; 

和迭代使用:

for(var i = 0, xlength = x.length; i < xlength; i++) 
{ 
    for(var j=0, ylength = x[i].length; j < ylength; j++) 
    { 
     console.log(x[i][j].value); 
    } 
} 
+0

我無法更改數據結構。我正在Appcelerator中開發一個iPhone應用程序,這是我從地址簿中獲取信息時所得到的結果。如果我能以JSON格式獲得最終輸出(僅限地址),他們最好。這可能嗎? – 2011-04-19 19:14:03

+0

目前的輸出是:[[「[email protected]」],[「[email protected]」],[「[email protected]」],[「[email protected]」]] in JSON。我會很酷,如果這可能是:{「data」:[{「email」:「[email protected]」},{「email」:「[email protected]」},{「email」:「nothing @ email.com「},{」email「:」[email protected]「}]}。這可能嗎? – 2011-04-19 19:18:54

0

答案編輯的問題:

var ret = {data: []}; 

for(var j = 0; j < x.length; j++) 
{ 
    for(var anItem in x[j]) 
    { 
     ret.data.push({ 
      email: x[j][anItem] 
     }); 
    } 
} 

console.log(ret); 

結果保持在ret