Jquery .append数组:按照包含的值引用数组

时间:2012-04-28 18:24:02

标签: jquery arrays append

我正在使用.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':'百'},
];

感谢您的任何建议!

1 个答案:

答案 0 :(得分: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'));

DEMO: http://jsfiddle.net/DgAzz/


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

var words_map = {};

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

DEMO: http://jsfiddle.net/DgAzz/1/