2012-04-28 45 views
0

我正在使用.append將兩個或多個數組連接在一起形成一個短語,如您在此jsfiddle中所看到的:jsfiddle append arrayJquery .append數組:按照包含的值引用數組

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]。這是因爲每次我爲「單詞」數組添加新詞彙時,索引號顯然都在變化,這意味着我需要手動更改詞組的所有索引號。

那麼是否有一種方法可以通過使用值而不是索引號來連接數組,因爲無論添加多少個新單詞,該值都不會改變?

例如,而不是:

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

有這樣的事情(但顯然這是不正確的):

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

PS 我不介意改變,如果它字面陣列幫助,例如:

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

感謝您的任何建議!

+2

變化將'words'轉換爲json格式字符串,並將其轉換爲帶有'parseJSON'的對象。 – gdoron 2012-04-28 18:28:49

回答

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/

+0

這看起來不錯,但爲了便於說明,我簡化了我的數組,每個單詞實際上有兩個以上的值,例如'['百','bǎi','百'],'這就是爲什麼我使用多個數組而不是一個對象 - 你的建議仍然有可能嗎? – user1218478 2012-04-28 18:50:59

+0

@ user1218478:那麼當請求''hundred''時,它的所有相關值將被連接成字符串?它不應該有任何不同。只要每個屬性的值都是一串字符串,就像''hundered':['bǎi','百']'。 – 2012-04-28 18:54:18

+0

啊,我不知道你可以這樣做!所以最後一塊難題是如何引用'var sen =('' + words[key] + '
' + key + '
')中的每個數組元素;'? – user1218478 2012-04-28 19:00:09