本周学习总结

本文详细介绍了JavaScript中数组的各种遍历方法,包括for循环、for...in、for...of、forEach、map等,并重点讲解了冒泡排序和快速排序两种排序算法的实现。此外,还列举了数组的常用方法,如push、pop、sort、reverse等,并提到了对象的创建及遍历。最后,探讨了函数的递归调用原理和对象的创建方式。
摘要由CSDN通过智能技术生成

一、数组的遍历

1、使用for循环遍历

2、使用for...in循环:

for(index in 数组名){

循环体语句

}

3、使用for...of循环:

for( value of 数组名){

循环体语句

}

4、forEach循环遍历:

数组名.forEach(function(value,index){

函数体语句

})

5、使用map函数遍历数组:实际是对数组的过滤。返回一个新的数组,原数组不变

let 新数组名 = 原数组名.map(function(item){ //item表示数组元素

函数体语句

})

总结:正常的for循环可以根据自己设定遍历数组,效率也是最高的。for...in按顺序遍历数组的索引,for...of遍历数组的值,forEach两者都可以遍历出来。map遍历原数组的元素,再过滤(根据设定的条件)符合的元素返回到新数组中

二、排序算法

1、冒牌排序

        for (let i = 0; i < arr.length; i++) {
            for (j = i + 1; j < arr.length; j++) {   //从小到大
                if (arr[i] > arr[j]) {
                    let temp = arr[i]
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }

2、快速排序(效率更高)

        function quickSort(arr, begin, end) {
            if (begin >= end) return;
            let temp = arr[begin];
            let i = begin;
            let j = end;
            while (i < j) {
                while (arr[j] >= temp && j > i) {
                    j--
                }
                while (arr[i] <= temp && j > i) {
                    i++
                }
                if (j > i) {
                    let t = arr[i]
                    arr[i] = arr[j]
                    arr[j] = t
                }
            }
            arr[begin] = arr[i]
            arr[i] = temp
            quickSort(arr,begin,i-1)
            quickSort(arr,i+1,end)
        }
        let arr = [12, 125, 34, 45, 506, 44, 66, 77, 88, 99];
        quickSort(arr,0,9)
        console.log(arr)

三、数组的常用方法

1、push(值/变量):从数组的末尾向数组添加元素

2、pop():从数组的末尾删除元素,一次只删除一个,返回的是被删除的元素。无需传参

3、shift():从数组的首部删除元素 

4、unshift(值/变量):从数组的首部插入元素

6、sort():排序函数。默认的是从小到大。(根据ASCII码值 排序)

7、reverse():将数组元素颠倒顺序

8、slice():切片函数:从原数组中截取部分元素组成新的数组。

9、splice():可以实现对数组元素的插入、删除和替换

10、indexOf(元素):从左向右查找元素的位置。

11、lastIndexOf(元素):从右向左查找元素的位置。

12、filter(function(value,index) {}可以实现对数组元素的"过滤",返回的元素构成一个新的数组

13、fill(值/变量):用给定的值或变量填充数组

14、every(function(value) { })满足条件,返回 true

15、includes() :判断一个数组中是否包含一个指定的值

四、函数的递归调用

1、递归调用:函数自己调用自己(即在函数的函数体语句中调用自己)

2、递归算法:

(1)用递归方式解决问题的前提

          a、问题可以进行分解,分解得到的新问题的解法与原问题的解法相同

                          8! --> 8 * 7! --->7 * 6!-->.......-->2 * 1!

          b、问题的分解过程必须有明确的结束条件

(2)递归的过程

          a、自上而下分解问题:得到最简单的问题的解

          b、自下而上回溯得到原问题的解

五、对象

1、使用字面量创建:{ }

属性名/方法名:值/方法

2、通过Object来创建对象:

对象名.属性名/方法名 = 值/方法

3、利用构造函数创建对象

this.属性名/方法名 =  值/方法

4、遍历对象的属性和方法:使用for...in循环

5、对象数组:数组中存放的是对象(数组中的每个元素都是对象)

6、内置对象

(1)Math对象:是一个内置对象,用于数学运算的。 不是函数对象,Math.属性名/方法名

(2)Date对象:是一个函数对象,使用new 运算符创建对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地狱三头猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值