[英]How to retrieve values from Javascript associative array hash table?
我有一個充滿術語的數組,它們的定義如下:
var definitions = [
{label : "abdomen", def: "stomach, stomach area, belly, tummy"},
{label : "ability", def: "skill"},
{label : "abolish", def: "end, do away with, get rid of"},
etc
]
我想編寫一個for
循環,該循環基本上貫穿每個“標簽”並列出它們。 為了只列出一個術語,我嘗試了不同的方法,但沒有一個起作用:
var definitionDiv = document.getElementById("definitionContainer");
definitionDiv.appendChild(document.createTextNode(definitions["abdomen"));
要么
definitionDiv.appendChild(document.createTextNode(definitions.def["abdomen"));
要么
definitionDiv.appendChild(document.createTextNode(definitions.label[1]));
他們都沒有工作。 我期望的最終結果是使用for
循環將所有標簽列為指向def
或定義的鏈接。 但是首先我需要克服這個障礙。
首先,你真的想要這個:
definitionDiv.appendChild(document.createTextNode(definitions[0].label));
您可以使用definitions[0].def
訪問def
屬性。 用於循環:
var i;
for (i = 0; i < definitions.length; i++) {
var definition = definitions[i];
// Use definition.label and definition.def however you want here.
}
在當前的表單definitions[i].label
和definitions[i].def
是你正在尋找的。
如果要通過標簽而不是數字索引訪問定義,也可以嘗試使用表示法,您要查找的內容更像是哈希而不是數組。
在這種情況下,您可以將數組重組為一個對象,鍵將是標簽。
var definitions = { // objects are hashes
abdomen: "stomach, stomach area, belly, tummy",
ability: "skill",
abolish: "end, do away with, get rid of",
// key: value,
// ...
};
當然,這會改變您瀏覽項目的方式,現在變成一個枚舉 。
for (var label in definitions) {
if (definitions.hasOwnProperty(key)) {
// label is label
// definition is definitions[label]
alert(label + " => " + definitions[label]);
}
}
如果我正確地遵循,您只想得到一個鏈接列表,標簽是用戶看到的內容,“ def”是鏈接的“ href”?
如果是這樣,你可以這樣做:
var definitions = [
{
label: "abdomen",
def: "stomach, stomach area, belly, tummy"
},
{
label: "ability",
def: "skill"
},
{
label: "abolish",
def: "end, do away with, get rid of"
}
];
$.each(definitions, function(index, item) {
$('#definitionContainer').append('<a href="' + item.def + '">' + item.label + '</a>');
});
這里是一個工作示例: JSFiddle
列出單個術語:
function getDef( which ) {
for(var i=0,j=definitions.length; i<j; i++){
if( definitions[i].label == which )
return definitions[i].def;
}
}
所以:
var foo = getDef('ability'); // etc
要構建完整的定義列表:
var finalResult = $('<dl/>');
$( definitions ).each( function(i,e){
var $dt = $('<dt/>').html( e.label );
var $dd = $('<dd/>').html( e.def );
finalResult.append( $dt, $dd );
});
$('#answer').append( finalResult );
這是一個例子: http : //jsfiddle.net/VyXdG/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.