0

この jsfiddle: jsfiddle append arrayでわかるように、現在 .append を使用して 2 つ以上の配列を結合してフレーズを形成しています。

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] などのインデックス番号の代わりに、「100」などの配列値を使用して配列を追加する方法が必要です。これは、'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 に答える