JavaScript - 如何根据数组嵌套创建嵌套无序列表?


在这个问题陈述中,我们的任务是使用 Javascript 根据数组的嵌套创建嵌套无序列表。为此,我们将使用一个函数来递归调用每个嵌套数组并创建一个新的无序列表。

理解问题陈述

在上述问题陈述中,我们必须使用 Javascript 为 HTML 中的嵌套列表创建一个函数。代码的输入将是一个数组,该数组可以包含任意数量的项目,并且还可以包含表示嵌套列表的其他数组。

该代码将使用递归函数遍历给定的输入数组,并根据需要开发新的 HTML 元素(如 ul、li 和文本节点),以生成所需的列表结构。生成的列表将连接到 HTML 文档中由 ID 标识的特定元素。

例如:

  • 冷饮

  • 咖啡

  • 奶昔

以上列表是用项目符号显示的无序列表。

算法

步骤 1 - 首先创建一个 HTML 文件,在这个文件中,我们必须包含用于创建无序列表的 Javascript 代码。并创建一个 div 并将其 id 设置为 jsList,我们将在前端显示列表。

步骤 2 - 定义一个包含列表项的嵌套数组。

步骤 3 - 定义一个名为 createNestedList 的函数,并传递一个嵌套数组参数。

步骤 4 - 声明一个变量,使用 createElement 来存储无序列表项。

步骤 5 - 开始一个 for 循环来遍历数组元素并将嵌套列表添加到列表标签中。

步骤 6 - 检查数组是否包含元素。如果条件为真,则追加它;否则转到 else 部分。

步骤 7 - 检查项目是否包含嵌套元素,如果是,则将其作为子节点附加到我们创建的节点。

步骤 8 - 最后返回使用嵌套数组创建的无序列表。

算法代码

<!DOCTYPE html>
<html>
   <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width">
      <title>JS nested unordered list</title>
   </head>
   <body>
      <div id="jsList"></div>

      <script>
         //create a nested list
         const arr = [
            'Coffee', ['Cappuccino', 'Americano', 'Espresso', 'Mocha'],
            'Tea', ['Milk Tea', 'Black Tea'], 'Milk'
         ];
         //function to show the nested list on page
         function createNestedList(arr) {
            const ul = document.createElement('ul');
            for (let i = 0; i < arr.length; i++) {
               const li = document.createElement('li');
               if (Array.isArray(arr[i])) {
                  li.appendChild(createNestedList(arr[i]));
               } else {
                  li.appendChild(document.createTextNode(arr[i]));
               }
               ul.appendChild(li);
            }
            return ul;
         }
         const div = document.getElementById('jsList');
         div.appendChild(createNestedList(arr));
      </script>
   </body>
</html>

复杂度

代码的时间复杂度为 O(n),其中 n 是给定输入数组中的元素总数,因为每个元素都遍历并处理一次。但是,由于递归函数可以创建大量新的 HTML 元素并将其存储在调用堆栈上,因此空间复杂度可能更高。

结论

以上代码是使用 Javascript 中的嵌套数组创建嵌套无序列表的示例。该代码提供了一种灵活且高效的方法来使用 Javascript 在 HTML 中生成嵌套列表。但是,当处理大型嵌套数组时,应谨慎使用此代码,以避免内存使用和堆栈溢出问题。

更新于:2023年5月18日

3K+ 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.