day09

54 阅读6分钟

1.数组的常用方法

*  数组的常用方法
     *
     *      1. push
     *          * 语法: 数组.push(数据)
     *          * 作用: 向数组末尾添加数据
     *          * 返回值: 追加数据后, 数组最新的长度(length)
     *
     *      2. pop
     *          * 语法: 数组.pop()
     *          * 作用: 删除数组最后一条数据
     *          * 返回值: 被删除的数据
     *
     *      3. unshift
     *          * 语法: 数组.unshift(数据)
     *          * 作用: 向数组开头添加数据
     *          * 返回值: 添加数据后, 数组最新的长度(length)
     *
     *      4. shift
     *          * 语法: 数组.shift()
     *          * 作用: 删除数组第一条数据
     *          * 返回值: 被删除的数据
     *
     *      5. reverse
     *          * 语法: 数组.reverse()
     *          * 作用: 反转数组
     *          * 返回值: 反转后的数组
     *
     *      6. sort
     *          * 语法1: 数组.sort()
     *                  * 作用: 会将数据转换为 字符串后, 一位一位的对比
     *          * 语法2: 数组.sort(function (a, b) {return a - b})
     *                  * 作用: 会按照数字大小升序排列
     *          * 语法3: 数组.sort(function (a, b) {return b - a})
     *                  * 作用: 会按照数字大小降序排列
     *
     *          * 返回值: 排序后的数组
     * 
     *      7. splice
     *          * 语法1: 数组.splice(开始索引, 多少个)
     *                  * 作用: 截取数组部分内容
     *          * 语法2: 数组.splice(开始索引, 多少个, 插入的数据1, 插入的数据2, 插入的数据3...)
     *                  * 作用: 截取数组部分内容, 并插入新的数据
     * 
     *          * 返回值: 截取出来的部分内容   组成的 数组
     * 
     *      数组的方法 能够改变原数组的 就只有上边说的 7 个
     * 
     * 
     *      8. slice
     *          * 语法: 数组.slice(开始索引, 结束索引)
     *          * 参数:
     *              + 包前不包后: 包含开始索引位置的数据, 不包含结束索引位置的数据
     *              + 不写开始索引, 默认是0; 不写 结束索引, 默认是 数组的length
     *              + 参数支持写负数, 表示倒数第几个, 其实就是 length + 负数
     *          * 作用: 截取数组部分内容
     *          * 返回值: 截取出来的部分内容组成的新数组
     * 
     *      面试题: 数组中有两个方法, splice 与 slice, 你能描述一下他们两个的区别吗?
     *                  1. 参数含义不同, 然后介绍一下 参数哪里不同
     *                  2. splice 会改变原数组, 而 slice 不会
     
     
     

2.常用的方法2

*  9. concat
     *      * 语法: 原始数组.concat(数组1, 数组2, ...., 数据1, 数据2, ....)
     *      * 作用: 进行数据拼接, 把数组...数据之类的小括号里的内容, 拼接在原始数组中
     *      * 返回值: 拼接好的数组
     * 
     *  10. join
     *      * 语法: 数组.join('连接符')
     *      * 作用: 使用 "连接符", 把数组内的每一个数据连接成一个字符串 (不写连接符, 默认使用的是 逗号)
     *      * 返回值: 连接好的字符串
     * 
     *  11. indexOf
     *      * 语法1: 数组.indexOf(要检查的数据)
     *              * 作用: 从前到后(从左到右) 检查该数据第一次在该数组内出现 索引
     *      * 语法2: 数组.indexOf(要检查的数据, 开始索引)
     *              * 作用: 在开始索引的位置, 按照从左到右的顺序, 检查该数据第一次在该数组内出现的 索引
     *      * 返回值: 找到数据的情况下, 会将该数据第一次出现的下标(索引)返回
     *                  没找到的情况下, 会直接返回一个 -1
     * 
     *      * 备注: 开始索引不写的时候 默认是0
     * 
     *  12. lastIndexOf
     *      * 语法1: 数组.lastIndexOf(要检查的数据)
     *              * 作用: 从后向前(从右向左), 检查该数据第一次在该数组内出现的 索引
     *      * 语法2: 数组.lastIndexOf(要检查的数据, 开始索引)
     *              * 作用: 在开始索引的位置, 按照从右向左的顺序, 检查该数据第一次在该数组内出现的 索引
     *      * 返回值: 找到数据的情况下, 返回第一次出现的下标(索引)
     *                  没找到的情况下, 直接返回一个 -1
     
     
     

3.数组遍历的常用方法

 *  数组遍历的常用方法
     * 
     *  1. forEach
     *      * 语法: 数组.forEach(function (item, index, origin) {})
     *              * item: 数组的每一项 的值
     *              * index: 数组的每一项 对应的下标
     *              * origin: 原始数组  (了解即可, 一般没人用)
     *      * 作用: 遍历数组
     *      * 返回值: 该方法永远没有返回值 (undefined)
     * 
     *  2. map
     *      * 语法: 数组.map(function (item, index, origin) {})     三个参数的意义与 forEach 相同
     *      * 作用: 映射数组
     *      * 返回值: 返回一个和原数组长度相同的数组, 但是内部数据可以经过我们的映射加工
     *      * 映射加工: 就是在函数内 以 return 的形式书写
     * 
     *  有一道面试题: 数组常用的遍历方法中, 有一个forEach 和 一个 map, 这两个方法有什么区别?
     *          1. forEach 的作用是用来遍历数组, 而 map 的作用是用来映射数组
     *          2. forEach 没有返回值, 而 map 是可以有返回值的
     * 
     *  3. filter
     *      * 语法: 数组.filter(function (item, index, origin) {})      三个参数的意义与 forEach 相同
     *      * 作用: 过滤数组
     *      * 返回值: 返回一个新数组, 内部存储的是原始数组过滤出来的部分内容
     *      * 过滤条件: 过滤条件以 return 的形式书写
     * 
     *  4. find
     *      * 语法: 数组.find(function (item, index, origin) {})        三个参数的意义 与 forEach 相同
     *      * 作用: 在数组内查找满足条件的第一项
     *      * 返回值: 找到的数据, 如果没找到返回的是 undefined
     *      * 查找条件以 return 的形式书写
     * 
     *  5. findIndex
     *      * 语法: 数组.findIndex(function (item, index, origin) {})       三个参数的意义 与 forEach 相同
     *      * 作用: 在数组内查找满足条件的第一项 的下标
     *      * 返回值: 找到的数据 的下标, 如果没找到返回的是 -1
     *      * 查找条件以 return 的形式书写
     * 
     *  6. some
     *      * 语法: 数组.some(function (item, index, origin) {})            三个参数的意义 与 forEach 相同
     *      * 作用: 判断数组内是否有一个满足条件
     *      * 返回值: 一个布尔值    true/false
     *      * 判断条件以 return 的形式书写
     * 
     *  7. every
     *      * 语法: 数组.every(function (item, index, origin) {})            三个参数的意义 与 forEach 相同
     *      * 作用: 判断数组内是否全都满足条件
     *      * 返回值: 一个布尔值    true/false
     *      * 判断条件以 return 的形式书写
     * 
     *  8. reduce
     *      * 语法: 数组.reduce(function (prev, item, index, origin) {}, init)
     *          * prev: 表示初始值或者上一次的运算结果
     *          * item: 表示数组的每一项 的值
     *          * index: 表示数组的每一项 的下标(索引)
     *          * origin: 原始数组
     *      * 作用: 用来实现叠加效果
     *      * 返回值: 最终叠加的结果
     *      * 注意: 
     *              + 叠加条件以 return 的形式书写
     *              + prev 第一次的值, 如果你传递了 init, 就是 init 的值, 如果没有传递 init, 那么就是 数组[0] 的值
     *              + 如果传递了 init, 循环执行 数组.length 次, 如果没有传递 init, 循环执行 数组.length - 1 次