数组的常用方法 , 数组遍历常用方法 , 数组的数学的方法

157 阅读8分钟

数组的常用方法

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,插入的数据,插入的数据3...)
        作用:截取数组部分内容,并括入新的数据
    返回值:截取出来的内容 组成的 数组

数组的方法 能够改变原数组的只有上述七个

8.slice 方法:
    语法:数组.slice(开始索引,结束索引)
    参数:包前不包后:包含开始索引位置的数据,不包含结束索引位置的数据
        不写开始索引: 默认是0;
        不写结束索引,默认是数组的Length
    作用:截取数组部分内容
    返回值:截取出来的内容 组成的 数组,但原数组不受影响
    注意:slice 这个方法允许写负数,写负数的时候就相当于写了length + 负数

##面试题:
    数组中有两个方法,splice 与 slice,你能描述一下他们两个的区别吗?
            1.参数含义不同,然后介绍一下参数哪里不同
            2.spLice会改变原数组,而sLice不会

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

数组遍历常用方法:

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

数组的数学的方法

在JS中,Math对象给我们提供了操作数据的一些方法(数学的方法)

1.random
  语法:Math.random()
  作用:得到一个随机数,每次生成的数字都不一样。但一定是0~1之间的,
  包含0,但不包含1,也就是说最大值可能是0.999999...

2.round 
  语法:Math.round(数字)
  作用:将这个数字(小数),按照四舍五入的方式变成整数

3.ceil 
  语法:Math.ceil(数字)
  作用:将这个数字(小数),向上取整(1.01 -> 2)

4.floor
  语法:Math.floor(数字)
  作用:将这个数字(小数),向下取整(1.999 -> 1)

5.abs
  语法:Math.abs(数字)
  作用:返回这个数字的绝对值

6.sqrt 
  语法:Math.sqrt(数字)
  作用:返回平方根

7.pow
  语法:Math.pow(基数,幂)
  作用:求 基数 的 幂 次方

8.max
  语法:Math.max(数字1,数字2,...)
  作用:返回传入数字中最大的值

9.min
  语法:Math.max(数字1,数字2,...)
  作用:返回传入数字中最小的值

10.PI
  语法:Math.PI
  作用:返回圆周率 Π (301415926....)

JS的严格模式

JS 是一个相对不是很严谨的语言 ,在开发的时候一些代码也不是很严格,换句话说严格模式就是对开发的时候,你写的代码做了一些要求

严格模式的规则:
    1.声明变量必须要 var 关键字
    2.函数的形参不可以重复

s中默认是没有开启严格模式。如果想要开启严格模式,
需要手动在代码最开始的位置(script标签内第一行),
写一个字符串 'use strict' 

字符集(了解)

计算机只能存储二进制数据01010101
我们的大写字母小写字母符号之类的内容都是由二进制数字组成
或者说我们在敲一个字符的时候,都有一个对应的编号,
计算机存储的时候存储的是这些编号,
只不过我们看到的时候,是通过这些编号解析成我们看到的内容


前身: ASCIr as key(128)只够美国人用英语的使用
国内推出了一个属于中国的GBK国标码――前128位 ASCII码,后边从129位开始就是汉字


unicode(万国码)
前128位还是ASCII码,后边开始是各个国家的文字码

八位十六进制编码
    容量小,但是占用内存也小
          UTF-8
十六位的十六进制编码
    容量大,但是占用内存也大