数组方法

数组

基础类型和引用类型
(1)基础类型:number/string/boolean/undefined/null
(2)引用类型:{}/[]/function
(3)null和undefined是特殊类型
从存储的角度来看待不同的数据类型:
基础数据类型会将数据存储在栈中,引用数据类型会将数据存储在堆中,将堆的地址存储在栈中

数组方法1:
因为系统为了方便我们对数组进行操作,系统提供了一些专业操作数组的方法

1.开头添加:unshift
给数组的开头添加一个或多个元素:数组.unshift(一个值或多个值) - 返回添加以后的新数组的长度

2.开头删除:shift
给数组的开头删除一个元素:数组.shift() - 不需要参数,返回被删除的元素

3.结尾添加:push
给数组的末尾添加一个或多个元素:数组.push(一个值或多个值) - 返回新数组的长度

4.结尾删除:pop
给数组的末尾删除一个元素:数组.pop() - 返回被删除的值

5.在任意位置增、删、改:splice
语法
1.删除:
数组.splice(要删除的元素开始下标, 删除个数, 要放在删除位置的1个或多个值) - 返回被删掉的元素组成的数组
例如:
var arr = ['a', 'b', 'c', 'd', 'e', 'f']
//将c和d删除
var brr = arr.splice(2, 2)
console.log(arr); //(4) ['a', 'b', 'e', 'f'] //删除之后的数组
console.log(brr); //(2)  ['c', 'd'] //删除的元素

2.修改
在某个位置删除掉元素后,又放上新的元素 - 间接的形成了修改操作
var arr = ['a', 'b', 'c', 'd', 'e', 'f']
var crr = arr.splice(2, 3, 1,2,3)
console.log(arr);//(6) ['a', 'b', 1, 2, 3, 'f']
console.log(crr);//(3) ['c', 'd', 'e']

3..添加操作:还是修改语法,将删除的个数设置为0即可
var drr = arr.splice(2, 0, 1,2,3)

 

数组方法2

1.concat - 将多个数组或元素跟当前数组合并成一个更大的数组
语法: 数组.concat(1个或多个元素或数组) - 返回合并以后的大数组
var arr = ['a', 'b', 'c']

// 需求:将字符串 d 合并在数组中
var brr = arr.concat('d')

// 需求:将多个元素 字符串 d 和 字符串 e 合并在数组中
// var brr = arr.concat('d', 'e')
console.log(brr);

// 需求:合并多个数组
var crr = [1,2,3]
var drr = [7,8,9]
var err = arr.concat(crr, drr)
console.log(err);

2.sort方法:将数组进行排序
sort方法原理(冒泡排序:每相邻的两个元素进行大小比较,排除合适的顺序)
( 选择排序:每次排序都要找到最小值或最大值放在最前面,下次排序还是在剩下的数据中找到最小值或最大值放在前面)

语法:数组.sort() - 返回当前排序后的数组 - 将数组从小到大进行排序
var arr = [1,5,9,3,4,8,6,2,7]
arr.sort()
console.log(arr);
reverse 方法:将数组翻转
语法:数组.reverse() - 返回值是当前数组,翻转以后的数组
从大到小
arr.sort(function(a, b) {
return b-a
})
console.log(arr);

3.join方法:将数组元素使用指定的连接符连接成一个字符串
语法:数组.join(指定的连接符) - 返回连接以后的字符串
var arr = ['a', 'b', 'c'];
var str = arr.join('-') //a-b-c
var str = arr.join('') // abc
var str = arr.join() // a,b,c

4.slice方法:截取数组 - 可以将数组中指定的连续的一部分,单独拿出来做为一个新的数组
语法:数组.slice(开始下标, 结束下标) - 返回截取的结果,结果中不包含结束下标对应的元素
var arr = [1,5,9,3,4,8,6,2,7]
var brr = arr.slice(3, 6)
console.log(brr); //(3) [3, 4, 8]

 

1.es5新增的语法 - 严格模式
严格模式:就是js的一种语法,一旦使用这种语法,我们就在当前代码环境中,开启了严格的模式了
严格模式对于代码的要求会更高,让代码变得更加规范:
(1)不允许省略var定义变量
(2).不允许函数的形参同名
(3)不允许普通函数中的this关键字代表window窗口

(1)在所有代码的最前面添加字符串: 'use strict' - 让当前全局环境都开启了严格模式
(2)在函数作用域内的最前面添加字符串: 'use strict' - 让当前局部作用域内开启严格模式
this在js中是一个关键字 - 代表一个值
this关键字的5个场景:
1.全局的this代表window
2.普通函数中的this代表window
3.自调用函数中的this代表window
4.事件函数中的this代表事件源
5.对象方法中的this代表当前对象

2.es5新增了一些数组的方法
(1)indexOf:在数组中查找某个元素第一次出现的下标
语法:数组.indexOf(指定的元素)
返回值:如果在数组中找到元素了,返回这个元素对应的下标,如果没有找到,返回-1
通常利用indexOf判断某个元素是否在数组中

(2)forEach:用于遍历数组的
语法:数组.forEach(function(value, index, array){
value是每次遍历出来的元素
index是每个元素对应的下标
array是当前正在遍历的数组
})
index和array是可选参数,在遍历的时候,这两个参数可加可不加

(3)map:遍历数组,将每个元素都经过函数处理,处理成新的元素,将所有新的元素组成一个新的数组返回
语法:数组.map(function(跟forEach的参数是一样的)
{
return newValue
})
例如:
var arr = [10,20,30]
ar brr = arr.map(function(v) {
var newValue = v + v*0.3
return newValue
})
console.log(brr); // (3) [13, 26, 39]

(4)filter :过滤数组 - 遍历数组,将数组中满足指定条件的元素,组成新的数组并返回
语法:数组.fitler(function(跟forEach的参数是一样的) {
return 条件
})
返回值:返回满足条件的所有元素组成的数组

posted @ 2022-03-20 23:32  禅心佛子  阅读(162)  评论(0)    收藏  举报