JavaScript排序算法与深拷贝实践

需积分: 9 1 下载量 113 浏览量 更新于2024-09-03 收藏 2KB TXT 举报
本资源文档详细介绍了JavaScript编程语言中的一些基础概念和实用技巧,包括排序算法、数据复制和正则表达式应用。主要内容分为以下几个部分: 1. 冒泡排序:文档首先展示了冒泡排序算法的实现。冒泡排序是一种简单的排序算法,通过比较相邻元素并交换它们的位置,重复这个过程直到整个数组有序。在提供的代码中,`BubbleSort`函数接收一个数组`arr`,通过两个嵌套循环遍历数组,当发现相邻元素逆序时,交换它们的位置,从而达到升序排列。这种排序算法的时间复杂度是O(n^2),适用于小型数据集。 2. 选择排序:`changeSort`函数展示了另一种排序算法——选择排序。选择排序每次从未排序的部分选择最小(或最大)的元素,将其放到已排序部分的末尾。虽然选择排序同样具有O(n^2)的时间复杂度,但其内部逻辑与冒泡排序有所不同,这里主要强调了对数组进行比较和元素交换的过程。 3. 深拷贝:`clone`函数用于实现对象的深拷贝。JavaScript中的深拷贝不同于浅拷贝,它会递归地创建新对象,确保子对象也被复制,而非仅仅复制引用。当遇到数组或对象时,函数会根据不同类型进行处理,确保数据独立性。 4. JSON深拷贝:文档提到的`this.resCopy = JSON.parse(JSON.stringify(res.data))`这一行代码是将原始对象转换为JSON字符串再解析回来,实现了对象的深拷贝,确保在处理复杂数据结构时数据的安全复制。 5. 邮箱验证正则表达式:正则表达式`/^[a-zA-Z0-9_]{3,12}@[A-z0-9_]{2,12}(\.com|\.cn|\.com\.cn)$/g`被用来检查字符串是否符合邮箱格式。该正则表达式匹配了大部分常见邮箱格式,包括用户名长度、@符号、顶级域名等要求,并使用全局搜索标志`g`,表示可以匹配多组。 6. 打印素数:最后部分提到的是一个用于生成并打印2到99之间的素数的简单循环。通过嵌套循环,对每个数字进行质数判断,若数字只能被1和自身整除,则打印该数字,这是基本的素数筛选算法。 该文档提供了JavaScript编程中的基本排序算法、数据复制技术以及正则表达式的实用应用,对于初学者和进阶开发者都具有一定的参考价值。