我有一个充满术语及其定义的数组:
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
或定义的链接。但首先我需要克服这个障碍。
答案 0 :(得分:2)
首先,你真的想要这个:
definitionDiv.appendChild(document.createTextNode(definitions[0].label));
您可以使用def
访问definitions[0].def
媒体资源。对于循环:
var i;
for (i = 0; i < definitions.length; i++) {
var definition = definitions[i];
// Use definition.label and definition.def however you want here.
}
答案 1 :(得分:0)
目前的格式definitions[i].label
和definitions[i].def
是您正在寻找的。 p>
如果您想通过标签而不是数字索引访问定义,您也可以尝试使用表示法,您要查找的内容更像是哈希而不是数组。
在这种情况下,您可以将数组重组为一个对象,键将是标签。
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]);
}
}
答案 2 :(得分:0)
如果我正确关注你只想得到一个链接列表,标签是用户看到的标签,“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
答案 3 :(得分:0)
列出单个词:
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/