如果你正在開(kāi)發(fā)一個(gè)網(wǎng)站或者應(yīng)用,你可能需要將一個(gè)JavaScript數(shù)組轉(zhuǎn)換為一個(gè)菜單。這種需求往往涉及到將一個(gè)簡(jiǎn)單的列表轉(zhuǎn)換為一個(gè)更友好的導(dǎo)航菜單。在本文中,我將向你展示如何用JavaScript將一個(gè)數(shù)組轉(zhuǎn)換為一組嵌套的ul和li元素,方便創(chuàng)建導(dǎo)航頁(yè)。
首先,讓我們來(lái)看一個(gè)示例數(shù)組,準(zhǔn)備用于轉(zhuǎn)換為菜單。
const menuData = [ { name: 'Home', url: '/' }, { name: 'About Us', url: '/about' }, { name: 'Products', children: [ { name: 'Product 1', url: '/products/1' }, { name: 'Product 2', url: '/products/2' } ] }, { name: 'Contact Us', url: '/contact' } ];
- 在上面的數(shù)組中,我們有四個(gè)主要的菜單項(xiàng):Home、About Us、Products和Contact Us。其中Products具有一個(gè)子菜單,其中包含兩個(gè)子菜單項(xiàng)目:Product 1和Product 2。現(xiàn)在我們將考慮如何將它們轉(zhuǎn)換為一個(gè)帶嵌套u(yù)l和li元素的菜單。
首先,我們使用操作數(shù)組的特定方法來(lái)處理數(shù)據(jù)。在本示例中,我們使用Array.map()方法來(lái)遍歷數(shù)組中的每個(gè)項(xiàng)目,并將它們轉(zhuǎn)換為ul和li元素。如果需要添加子菜單,則遞歸調(diào)用相同的函數(shù)。
function buildMenu(menuData) { let menu = document.createElement('ul'); menuData.map((item) =>{ let li = document.createElement('li'); let a = document.createElement('a'); a.href = item.url; a.textContent = item.name; li.appendChild(a); if (item.children && item.children.length >0) { li.appendChild(buildMenu(item.children)); } menu.appendChild(li); }); return menu; } let output = buildMenu(menuData); document.getElementById('menu').appendChild(output);
在上面的代碼中,我們首先創(chuàng)建了一個(gè)
- 元素來(lái)承載我們的菜單。接著,我們使用Array.map()方法來(lái)循環(huán)遍歷menuData數(shù)組中的每一個(gè)元素。對(duì)于每個(gè)元素,我們創(chuàng)建一個(gè)新的
- 元素,并給它添加一個(gè)標(biāo)簽,以呈現(xiàn)菜單項(xiàng)的文本和鏈接。
在這個(gè)標(biāo)簽中,我們動(dòng)態(tài)地使用這個(gè)項(xiàng)目的url屬性生成一個(gè)鏈接。另外我們也將這個(gè)項(xiàng)目的用戶可見(jiàn)的名稱顯示在鏈接文本中。
然后,我們檢查這個(gè)菜單項(xiàng)是否有子菜單。如果這個(gè)項(xiàng)目有子菜單,我們將使用遞歸的方法運(yùn)行相同的代碼來(lái)創(chuàng)建子菜單。
最后,我們將
- 元素附加到menu元素中,并將整個(gè)menu返回以便顯示它。在我們的示例中,我們使用document.getElementById()方法從HTML獲取菜單所在的標(biāo)記。最后,我們將構(gòu)建出的菜單添加到HTML元素中,以便顯示。
通過(guò)上面的代碼,我們已經(jīng)可以使用JavaScript數(shù)組構(gòu)建嵌套的ul和li元素,在菜單部分可以完美工作。如果您正在開(kāi)發(fā)一個(gè)應(yīng)用程序或網(wǎng)站,需要在JS中動(dòng)態(tài)生成導(dǎo)航菜單,您可以嘗試使用上面的方法。這是一個(gè)非常簡(jiǎn)單的方法,可以讓您在不浪費(fèi)太多時(shí)間的情況下提高用戶體驗(yàn)。
- 元素附加到menu元素中,并將整個(gè)menu返回以便顯示它。在我們的示例中,我們使用document.getElementById()方法從HTML獲取菜單所在的標(biāo)記。最后,我們將構(gòu)建出的菜單添加到HTML元素中,以便顯示。