目录
一、冒泡排序的计算方法
二、数组forEach方法
三、Number(null)和Number(undefined)
四、es6中的set
一、冒泡排序的计算方法
冒泡排序的重点:两次循环,外层循环是总共要进行的躺数,为数组总长度-1,内层循环则是每个元素在每一次循环中需要比较的次数,每一趟可以决定出一个最大的元素,所以不需要进行比较,那么可以得到内层循环的取值则为数组总长度-1-j
//[7, 2, 3, 8, 3, 21]// 每一趟都能找到该躺最大值;//第1趟比较arr[0]~arr[5],最大值位于arr[5], 比较5次//第2趟比较arr[0]~arr[4],最大值位于arr[4],比较4次//第3趟比较arr[0]~arr[3],最大值位于arr[3],比较3次//第4趟比较arr[0]~arr[2],最大值位于arr[2],比较2次//第5趟比较arr[0]~arr[1],最大值位于arr[1],比较1次const arr = [7, 2, 3, 8, 3, 21];function bubbleSort(arr) {for (let j = 0; j < arr.length; j++) {for (let i = 0; i <= arr.length - j - 1; i++) {let max = null;if (arr[i] > arr[i + 1]) {max = arr[i];arr[i] = arr[i + 1];arr[i + 1] = max;}}}return arr;}const afterArr = bubbleSort(arr);console.log(afterArr);
二、数组forEach方法
forEach方法只是循环遍历,不可以改变数组内的值,数组内的元素如果为简单数据类型,则forEach循环时修改元素不会起作用,但如果为引用数据类型如对象,则可以修改数组内的对象的属性值。
修改数组元素不能改变:
//以下都不会改变数组内的元素const arr = [1, 2, 3, 4];arr.forEach(item => {item * 10;});const arr1 = [{ value: 1 }, { value: 2 }, { value: 3 }, { value: 4 }];arr1.forEach(item => {item.value * 10;});
但修改数组内对象的属性值可以改变:索引值为0的对象的value被改为999
const arr1 = [{ value: 1 }, { value: 2 }, { value: 3 }, { value: 4 }];arr1.forEach((item, index) => {if (index == 0) {item.value = 999;}});console.log(arr1);
三、Number(null)和Number(undefined)
console.log(Number(null)); //转换为数字为0console.log(Number(undefined)); //undefined相当于未赋值,转换为数字返回NAN not a number,不是一个数字
四、es6中的set
set用于储存一组不重复的值,set是无序的所以无法使用索引访问,set会自动去除重复的数据