js 数组 (方法总是记不住)
一 . 数组的方法
push() pop() shift() unshift() join() sort() reverse() concat() slice() splice() indexOf() lastIndexOf() forEach() map() filter() every() some
1.push() 和 pop()
push() :把里面的内容添加到数组的末尾,并返回修改后的长度
pop(): 移除数组最后一项。返回移除的那个值,并减少数组的长度
let arr = [1,2,3,4,5,6] let arr1 = arr.push(9) console.log(arr1) // 7 返回修改后的长度 let newArr = arr.pop() console.log(newArr,arr) // 7 移除的那个值,123456 arr.length = 6减少数组的长度
2.shift() 和 unshift()
shift: 删除原数组的第一项,并返回删除元素的值,如果数组为空则返回 undefined
unshift: 将参数添加到原数组的开头,返回数组的长度
let arr = [1,2,3,4,5,6] let arr1 = arr.shift() console.log(arr,arr1) // [2, 3, 4, 5, 6] , 1 let newArr = arr.unshift('a') console.log(newArr,arr) // 7, (7) ["a", 1, 2, 3, 4, 5, 6]
3.join
将数组转字符串,然后给它规定一个连接的字符,默认是逗号 arr.join('连接符')
let arr = [1,2,3,4,5,6] let arr1 = arr.join('-') console.log(arr1) // 1-2-3-4-5-64.sort() // 原数组被改变
将在原数组上对数组元素进行排序,即排序时不创建新的数组副本 ,精确地说,是按照字符编码(Unicode)的顺序)对数组中的元素进行排序
可知参数是可选的,也就是有两种情况,一是不加参数,另外一种是加函数参数,参数必须是函数
//a,b表示相邻的两个元素 //若返回值>0,数组元素将按升序排列 //若返回值<0,数组元素将按降序排列
注:sort() 的方法比较的是字符串,没有按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序的函数
let arr = [23,45,5,12] console.log(arr.sort()) // ["12", "23", "45", "5"]
let arr = ['a','f','b','e'] console.log(arr.sort()) // [a,b,e,f]
let arr = [1,3,4,10,2,5] function num (a,b) { console.log('a:',a,'b:',b,'arr:',arr) if (a > b) { return 1 } else if (a < b) { return -1 } else { return 0 } } console.log(arr.sort(num)) // [1, 2, 3, 4, 5, 10]
控制台输出 a 3 ,b=1 a < b 返回值 小于于0 按照升序排列 位置交换 不在想后比较 像前比较
大致比较的过程就是这样进行的 如果有错误 欢迎指出
第一次 a = 3 ,b=1 arr [1,3,4,10,2,5]
第2次 a = 4 ,b= 3 arr [1,3,4,10,2,5]
第3次 a = 10 ,b= 4 arr [1,3,4,10,2,5]
第4次 a = 2 ,b= 10 arr [1,3,4,2,10,5]
第5次 a = 2 ,b= 4 arr [1,3,2,4,10,5]
第6次 a = 2 ,b= 3 arr [1,2,3,10,5] 依次类推
5.reverse() // 原数组被改变
反转数组项的顺序
let arr = [1,4,10,2,5] let a = arr.reverse() console.log(a,arr)// [5, 2, 10, 4, 1] (5) [5, 2, 10, 4, 1]
6.concat() 返回合并后的新数组,不改变原数组
将参数添加到原来的数组中。这个方***创建当前数组的一个副本,然后将接收的参数添加到这个副本的末尾,最后返回新构建的数组,在没有给 concat()的方法传递参数的情况下,它只是复制当前数组的并返回副本
let arr = [1,4,10,2,5] let a = arr.concat(6,7,8) console.log(a,arr) a: 1,4,10,2,5,6,7,8 arr: 1,4,10,2,5... 扩展运算符 ES6 中的结构赋值
let arr = [1,4,10,2,5] let arr1 = ['a','b'] let arr3 = [...arr,...arr1] console.log(arr3) // [1, 4, 10, 2, 5, "a", "b"]