0

我目前正在使用 .append 将两个或多个数组连接在一起以形成一个短语,如您在此 jsfiddle 中所见:jsfiddle append array

function P1(phrase) {
    var sen = ('<a class="senword">' + phrase[0] + '<br/>' + phrase[1] + ' </a>');
       return sen;
}

var words = [
['one', '一'],    
['eight','八'],
['hundred','百'],
];

$("#onehundred").append(P1(words[0])).append(P1(words[2]));
$("#eighthundred").append(P1(words[1])).append(P1(words[2]));

但是,我需要一种通过使用数组值来追加数组的方法,例如“百”而不是索引号,例如 [2]。这是因为每次我向 'words' 数组添加新词汇时,索引号显然会发生变化,这意味着我需要手动更改短语的所有索引号。

那么有没有办法通过使用值而不是索引号来连接数组,因为无论我添加了多少新单词,这个值都不会改变?

例如,而不是:

$("#onehundred").append(P1(words[0])).append(P1(words[2]));

有这样的事情(但显然这是不正确的):

$("#onehundred").append(P1(words['one'])).append(P1(words['hundred']));

PS如果有帮助,我不介意更改为文字数组,例如:

var words = [
{'english':'hundred', 'chinese':'百'},
];

感谢您的任何建议!

4

1 回答 1

1

将数据结构更改为对象:

var words = {
    'one': '一',    
    'eight': '八',
    'hundred': '百'
};

然后更改您的P1函数以接受属性名称,并让它进行查找...

function P1(key) {
    var sen = ('<a class="senword">' + words[key] + '<br/>' + key + ' </a>');
       return sen;
}

然后只需传递属性名称...

$("#onehundred").append(P1('one')).append(P1('hundred'));
$("#eighthundred").append(P1('eight')).append(P1('hundred'));

演示:http: //jsfiddle.net/DgAzz/


如果您无法更改初始结构,则从中创建对象...

var words_map = {};

$.each(words, function(i, val) {
    words_map[val[0]] = val[1];
});

演示:http: //jsfiddle.net/DgAzz/1/

于 2012-04-28T18:39:55.130 回答