2013-06-02 47 views
0

我已經從其中它們中的一些缺失,例如像列表中的項目,爲了這裏第三丟失:陣列訴諸

<ol> 
    <li data-id='0'>Apple</li> 
    <li data-id='1'>Banana</li> 
    <li data-id='3'>Tea</li> 
    <li data-id='4'>Biscuit</li> 
</ol> 

我也有一個陣列的長度相同的列表項目的數目其中包含的數據爲每個列表項(這裏也第3項缺失,「C」):

var arr = ['a','b','d','e']; 

後,我重新映射到這個新的數組:

var ordered_array = jQuery('ol li').map(function() { 
    return arr[jQuery(this).data('id')]; 
}).get(); 

console.log(ordered_array); 

我得到:

["a", "b", "e"] 

爲什麼會失去一個項目? (「d」)

+0

屬性的值可能應該是0,1,2,3而不是0,1,3,4。 –

+0

是的,但是我刪除了第三個(在本例中),所以我試圖重新映射它,但是沒有再次改變id,這有可能嗎? – Toniq

+1

@Toniq:而不是從'arr'中刪除*值,將其設置爲'undefined' /'null'; 'var arr = ['a','b',null,'d','e'];' – Matt

回答

3

因爲如果返回從map()回調一個undefinednull值,該元素沒有條目被包括在返回陣列(docs)英寸

在這種情況下,data-id="4"Biscuit,但ar[4] === undefined,因此它不包含在返回的數組中。

+1

'茶'('data-id = 3')映射到'e'。 –

+0

如何讓它映射所有項目? – Toniq

相關問題