当前位置: 首页 > article >正文

js重要知识点

目录

一、冒泡排序的计算方法

二、数组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)); //转换为数字为0
  console.log(Number(undefined)); //undefined相当于未赋值,转换为数字返回NAN not a number,不是一个数字

四、es6中的set

set用于储存一组不重复的值,set是无序的所以无法使用索引访问,set会自动去除重复的数据


http://www.kler.cn/a/514163.html

相关文章:

  • 1/20赛后总结
  • RK3568笔记七十七:RTMP实时推流
  • C#与AI的共同发展
  • Android SystemUI——CarSystemBar车载状态栏(九)
  • Java虚拟机面试题:内存管理(中)
  • 海康工业相机的应用部署不是简简单单!?
  • MySQL入门(数据库、数据表、数据、字段的操作以及查询相关sql语法)
  • SQL中字符串截取函数(substring)
  • 解决 PostgreSQL 中创建 TimescaleDB 扩展的字符串错误
  • 分布式系统架构8:分布式缓存
  • SpringMVC新版本踩坑[已解决]
  • 2025年01月20日Github流行趋势
  • 连接 OpenAI 模型:基础操作
  • LatentSync本地部署教程:基于音频精准生成唇形高度同步视频
  • C#与AI的共同发展
  • list底层实现细节
  • 数据清洗新利器:自动化数据清洗工具的探秘
  • 我在广州学Mysql 系列——触发器的使用
  • AG32 FPGA 的 Block RAM 资源:M9K 使用
  • Go语言如何实现限制用户 1 分钟内最多请求 1000 次?
  • PHP礼品兑换系统小程序
  • 【漫话机器学习系列】054.极值(Extrema)
  • 接口(1)
  • 苍穹外卖项目总结(二)
  • MyBatis Plus 的 InnerInterceptor:更轻量级的 SQL 拦截器
  • Spark/Kafka