数组的一些方法
##ES5
push() 往数组的尾部添加一个或者多个元素,返回一个新数组
会修改原数组
pop() 删除数组尾部的最后一个元素,不接受参数,返回删除掉的元素(Nuber类型的数字)
unshift() 在数组头部添加一个或者元素,最后返回添加后的数组长度length(Nuber类型的数字)
shift() :删除数组头部的第一个元素,后面的元素自动往前顶替,返回删除掉的元素(Nuber类型的数字)
delete运算符能删除指定下标位置的元素,删除后的元素为空位元素,删除数组length保持不变
var arr2 = [1,2,3,4];
delete arr1[2];//删除指定下标的值,当前的值为空,所以数组变成了空位数组 长度不变
console.log(arr1);//[1,2,'',4] length =4
concat() 合并操作 这个方法可以跟随多个参数,能够把传递的所有参数按顺序添加到数组的尾部 返回一个新数组
var a = [1,2,null];var b = [3,undefined,4];var c = [5,'a',6]
var arr= a.concat.(b,7,8,c);
console.log(arr) // [1,2,null,7,8,3,undefined,4,5,'a',6]
#######splice() 截取数组 会修改原数组,会返回删除掉的元素组成的数组
var arr1 = [1,2,3,4,5,6,7];
console.log(arr1.splice(4));//[5,6,7] 传一个参数时则是删除对应下标元素自身到数组末尾,最后返回删除掉的元素数组[5,6,7]
console.log(arr1.splice(1,3));//[2,3,4] 传一个参数时可以看成截取数组,本质时删除,
传递三个以上或多个参数的情况
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EAgplGiI-1606986280643)(C:\Users\86173\Desktop\心得体会\imsge\屏幕截图 2020-11-15 193841.png)]
slice() 仅能够截取数组中指定区段的元素,并返回指定区段元素组成的新数组,不会修改原数组
reverse() 方法能够颠倒数组元素的排列顺序,该方法不需要参数 ,改变原数组,不创建新数组
sort() 接收一个函数作为参数,并按照条件进行排序
toString()和toLocalString()都是把数组转换成字符串,主要区别看代码
var arr = ["1.00",22222245678989,3,4,"a"];
console.log(arr.toLocaleString());//1.00 ,22,222,245,678,989 ,3,4,a
console.log(arr.toString());//1.00 ,22222245678989 ,3,4,a
join() 方法可以把数组转换为字符串,不过它可以指定分隔符,调用join方法时传参,
var arr = ['1',2,'c',4,5,null]
console.log(arr.join())//不传参时 1 1,2,c,4,5, 数组中有null就是空 length=6
console.log(arr.join("-"))// 1-2-c-4-5-
console.log(arr.join(""))//12c45
isArray() 判断某个值是否是数组
var a = "123", b = [6,2,3,4];
console.log(Array.isArray(a));//false
console.log(Array.isArray(b));//true
#####every()方法检测是否全部符合
every() 和forEach()用法一样不同的是最终返回的是布尔值 ;根据条件有一个不满足条件则返回false 则every()方法停止执行最终返回false,除非全部返回true时every()方法才会返回true (全部为真则为真)
#####some()检测是否存在
some()和every()方法用法相同,但是最终返回布尔值的条件有所不同 ,只要有一个元素只要满足指定的条件则最总结果返回true(一真即真)
every() & some() 案列
//every方法 检测数组中元素的值是否都在指定的范围内,返回值用一个对象设置
var obj = {max:20,min:10};
var arr = [12,13,19];
var isScope = arr.every(function(item){
if(typeof item !== "number"){
return false
}else{
//this指向第二参数obj
return item>=this.min && item <=this.max
}
},obj)
//some方法
var arr = [18,19,20,21,30,11,14,19,40];b={max:18}
var isTrue = arr.some(function (item,index,array) {
return item < this.max;
},b)
for/in 方法
var arr = ['a','b','c',' ','e']
for(var j in arr){
console.log(j,arr[j]);//a b c e 直接跳过空元素
}
Object.keys() 方法
var arr = ["a","b","c",,"d"];
console.log(Object.keys(arr));//["0", "1", "2", "4"]
##ES6
Array.from() 把伪数组转换成数组(可以使用数组的方法)
Array.of() 将一组数字转换成数组 弥补Array的不足
let oLis = document.getElementsByTagName("li");//伪数组
console.log(Array.from(oLis));//oLis [li,li,li,li]
let arr1 = Array.of(1, 2, 3, 4);
console.log(arr1);[1,2,3,4]
copyWithin() 方法接收3个参数:该方法不仅可以改变原数组,还可以返回一个新数组;新数组和原数组一摸一样
第一参数代表从该下标开始替换数据,包括自身也被替换,如果为负值,表示倒数length
第二 个参数代表从该下标位置开始读取数据,默认为 0。如果为负值,表示从末尾开始计算length,如果不写代表替换到末尾
第三个参数代表该下标位置前一个停止读取数据,默认等于数组长度。如果为负值,表示从末尾开始计算。
let arr = [1, 2, 3, 4, 5, 6, 7, 8];
//从下标4开始读取一直读取到下标6前面一个,然后从下标0开始替换元素
var a = arr.copyWithin(0, 4, 6);//0 代表下标0 ; 4代表下标4 6代表下标6
console.log(a,arr);//[5, 6, 3, 4, 5, 6, 7, 8]
fill() 填充数组
用于空数组的初始化非常方便。数组中已有的元素,会被全部抹去。
还可以接受第二个和第三个参数,用于指定填充的起始位置和结束位置。
let arr2 = [1, 2, 3, 4, 5, 6, 7, 8];
//从下标1开始替换到下标2前面一个,替换为7
const a=['a', 'b', 'c'].fill(7, 1, 2)
sonsole.log(a)//['a', 7, 'c']
find() 数组实例方法,用于找出第一个符合条件的数组成员,返回值就是这第一个符合自定义筛选条件为true的数组成员
findIndex()和find用法原理一摸一样不同的时返回值时下标
let arr4 = [1,'t', "undefined", 0, "e"];
let result = arr4.find(function (item, index, arr) {
return typeof item == "string"
})
console.log(result); // t
flat() 拉平数组
let arr = [1, 2, [3, 4]]; console.log(arr.flat(Infinity))
entries() 方法
const arr1 = ["a", "b", "c", "d", "e"];
const iter = arr1.entries(); //返回的是一个iterator(遍历器对象)对象遍历器对象有一个next方法,可以依次遍历iterator中的内容
console.log(iter.next());1//done:false value [0 : 'a']
...
console.log(iter.next());5
console.log(iter.next());6//done:true value unedfined
...
for (let i of arr1.entries()) {
console.log(i) //[key : value] = [0 : 'a']
}
keys() 返回的是下标
let arr3 = ["a", "b", "c", "d", "e"];
for (a of arr3.keys()) {
console.log(a);//返回的是下标 0,1,2,3,4,5
}
values() 返回的当前的值value
let arr3 = ["a", "b", "c", "d", "e"];
for (item of arr3.values()) {
console.log(item); // a b c d e
}