本文未经允许,禁止转载
数组
能改变原数组
-
Array.push(),向数组末尾添加一个或者多个元素,并返回新的数组长度。原数组改变。
// 原理 Array.prototype.push = function () { for (let i = 0; i < arguments.length; i++) { this[this.length] = arguments[i]; } return this.length } // 例如 let arr = [1, 2, 3, 4] arr.push(5, 6, 7) arr = [1, 2, 3, 4, 5, 6, 7]
-
Array.pop(),删除并返回数组的最后一个元素,若该数组为空,则返回undefined。原数组改变。
//例如 arr = [1, 2, 3, 4, 5, 6, 7] arr.pop() // del = 7 // arr = [1, 2, 3, 4, 5, 6]
-
Array.unshift(),向数组的开头添加一个或者多个元素,并返回新的数组长度。原数组改变。
let arr = [1, 2, 3, 4, 5, 6, 7] let res = arr.unshift(0) // res = 8 返回数组长度 // arr = [0, 1, 2, 3, 4, 5, 6, 7]
-
Array.shift(),删除数组的第一项,并返回第一个元素的值。若该数组为空,则返回undefined。原数组改变。
let arr = [1, 2, 3, 4, 5, 6, 7] let res = arr.shift() // res = 1 返回第一个元素的值 //arr = [2, 3, 4, 5, 6, 7]
-
Array.reverse(),将数组倒序,原数组改变。
let arr = [1, 2, 3, 4, 5, 6, 7] arr.reverse() // arr = [7, 6, 5, 4, 3, 2, 1]
-
Array.splice(从第几位开始,截取多少的长度,在切口处添加新的数据),当截取长度为0的时候,则不删除元素。原数组改变。
let arr = [1, 2, 3, 4, 5, 6, 7] arr.splice(2,1) //从第二位开始删除一个长度 arr.splice(2, 1, 4) //从第二位开始截取一个长度 //arr = [1, 2, 4, 4, 5, 6, 7] arr.splice(2, 0, 4) //当截取长度为0时 // arr = [1, 2, 4, 3, 4, 5, 6, 7]
-
Array.sort(),对数组元素排序。按照字符串Unicode码排序。原数组改变。arr.sort(1.必须写两个形参 2.看返回值 当返回值为负数时,那么前面的数在前面;当返回值 为正数时,那么后面的数在前;当返回值为0 不动)
//例如: let arr = [1, 3, 5, 4, 10] arr.sort(function (a, b) { if(a > b) { //换成a < b 的时候 为降序 return 1 }else { return -1 } } ) //简化写法 arr.sort(function (a, b)) { return a - b; // 换成 b - a 的时候为降序 } //给一个有序的数组乱序 let arr = [1, 2, 3, 4, 5, 6] arr.sort(function() { return Math.random() - 0.5 })
不能改变原数组
-
Array.concat(),合并两个或者多个数组,生成一个新的数组。原数组不变。
let arr = ["x","y","z"] //不变 let arr1 = [1, 2, 3] //不变 let arr2 = [4, 5, 6] //不变 let rel = arr.concat(arr1,arr2) //rel = ["x","y","z", 1, 2, 3, 4, 5, 6] // 6. (可选) // 自定义concat方法 function concat (arr1, arr2) { for (i = 0; i < arr2.length; i++) { arr1.push(arr2[i]) } return arr1 } concat([1,2,3],[4,5,6])
-
Array.join(),将数组的每一项用指定字符链接形成一个字符串。默认链接字符串为“ , ”,逗号。
let arr = [1, 2, 3, 4, 5] arr.join() //"1, 2, 3, 4, 5" arr.join("-") //"1-2-3-4-5"
-
Array.slice(start,end),从start(第几位)开始,到end位之前结束,不包括end。如果不给end值,从start开始到数组结束。Start可以给负值,-1表示数据最后一位,以此类推。空值不写代表整个截取。
let arr = [1, 2, 3, 4, 5] let arr1 = arr.slice(2,4) // arr1 = [3,4] slice返回值 let arr2 = arr.slice(1) // arr2 = [2, 3, 4, 5] let arr3 = arr.slice(-2) // arr3 = [4, 5]
-
Array.indexOf( ) 返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
['a', 'b', 'c', 'a', 'b'].indexOf('b'); // 1 ['a', 'b', 'c', 'a'].indexOf('d'); // -1
-
Array.lastIndexOf( ) 返回在数组中最后一个的索引 如果不存在则返回 -1
['a', 'b', 'c', 'a'].lastIndexOf('a'); // 3 ['a', 'b', 'c', 'a'].lastIndexOf('d'); // -1
-
Array.includes() 检测数组是否包含某个元素 返回布尔值
let site = ['runoob', 'google', 'taobao']; site.include('runoob') //返回true
ES5/ES6 新增的数组方法
-
isArray()
用来判断是否是数组,返回一个布尔值, 弥补typeof检测的不足let arr = [1,2,3] console.log(typeof arr) // "Object" Array.isArray(arr) // true
-
forEach()
方法对数组的每个元素执行一次提供的函数。功能等同于for
循环. 应用场景:为一些相同的元素,绑定事件处理器!var arr = ["张飞","关羽","赵云","马超"]; //第一个参数:element,数组的每一项元素 //第二个参数:index,数组的下标 //第三个参数:array,正在遍历的数组 arr.forEach(function(element, index, array){ console.log(element, index, array); });
-
map()
方法遍历数组,返回一个新数组。新数组是原数组的映射,此方法不会改变原数组的值,新数组的每一项元素值是每次遍历return返回的值let arr = [1,2,3,4,5] let newArr = arr.map(item => return item * 2) console.log(newArr) // [2,4,6,8,10]
-
filter()
过滤数组,返回一个新数组。如果返回值为true,那么就留下来;返回值为false,就过滤掉let arr = [1000, 5000, 20000, 3000, 10000, 800, 1500]; var newArray = arr.filter(function(element, index, array){ if(element > 5000) { return false; }else { return true; } }); console.log(newArray);//[1000, 5000, 3000, 800, 1500]
-
some()
遍历数组,只要有一项满足条件就返回true 否则返回falselet arr = [2,4,6,8,10,21]; let result = arr.some(item => { if(element %2 == 1){ return true; }else { return false; } }) console.log(result) // true
-
every()
遍历整个数组,只有数组每一个元素返回true 才为true 有一个false就为falselet arr = [1,2,3,4,6,8,4] const result = arr.every(item => item % 2 === 0) console.log(result) // false
-
reduce()
遍历数组 接收两个参数 第一个参数为一个函数,第二个参数为函数迭代的初始值。此方法常用来数组求和/乘积、计算元素出现的次数、去重let arr = [1,2,3,4] let result = arr.reduce((prev,el,index,arr) => { // prev 上次函数调用返回的值 // el 当前元素 // index 当前元素的索引 // arr 被遍历的数组 return prev + el },5) console.log(result) // 15
-
find()
此方法接收一个回调函数,返回满足函数执行的第一个元素的值let arr = [2,3,4,6,7,8] let result = arr.find(item => item > 4) console.log(result) // 6
-
findIndex()
此方法接收一个回调函数,返回满足函数执行的第一个元素的下标,没有则返回-1let arr = [2,3,4,6,7,8] let result = arr.findIndex(item => item > 4) console.log(result) // 3
字符串
-
slice(start,end)
从start开始到end结束,且取不到endlet str = 'string' console.log(str.slice(2,4)) // ri
-
split()
将字符串转为数组//split:将字符串分割成数组(很常用) //功能和数组的join正好相反。 // var str = '赵云|马超|关羽'; // 第一种情况 不传递参数 使用的很少 // var arr = str.split(); // console.log(arr); // ["赵云|马超|关羽"] // 第二种情况 传递一个分隔符 // var arr = str.split('|'); // console.log(arr); // ["赵云", "马超", "关羽"] // 第三种情况 传递一个空值 // var arr = str.split(''); // console.log(arr); // ["赵", "云", "|", "马", "超", "|", "关", "羽"] ```
-
substring(start,end)
字符串截取 从start开始到end结束,且取不到end -
substr(start,end)
字符串截取 从start开始往后截取end位let str = 'string' console.log(str.substr(2,4)) // ring
-
indexOf()
遍历字符串 接收一个参数 判断是否包含 如包含则返回对应索引,不包含返回-1let str = 'string' str.indexOf('t') // 1
-
toUpperCase()
:全部转换成大写字母 ;toLowerCase()
:全部转换成小写字母 -
replace(searchValue, replaceValue)
字符串替换,如有重复字符则只会替换第一个// 参数:searchValue:需要替换的值 replaceValue:用来替换的值 let str = 'sttring' str.replace('t','z') // szring