Array常⽤⽅法(数组增加、数组删除、数组截取、数组查、数组遍历)Array的常⽤⽅法使⽤
1.数组增加
push: 向数组的末尾添加新的元素(参数可以是多个),返回数组长度,改变原数组
var arr =[];
var arrLength = arr.push('1');
console.log(arrLength);// 1
arrLength = arr.push('2','3','4');
console.log(arrLength);// 4
console.log(arr);// ['1','2','3','4']
unshift: 向数组的开头添加新的元素(参数可以是多个),返回数组长度,改变原数组
var arr =[];
var arrLength = arr.unshift('4');
console.log(arrLength);// 1
arrLength = arr.unshift('1','2','3');
console.log(arrLength);// 4
console.log(arr);// ['1','2','3','4']
concat:⽤于连接两个或多个数组(参数可以是多个),返回新数组,不改变原数组
没有传递参数的情况下,concat只是复制当前数组并返回副本
var arr =['1','2','3'];
var newArr = at();
console.log(arr);// ['1','2','3']
console.log(newArr);// ['1','2','3']
console.log(arr === newArr);// false
参数为⼀或多个数组,则将这些数组中的每⼀项都添加到副本数组中
var arr1 =['1'];
var arr2 =['2'];
var arr3 =['3'];
var newArr = at(arr2, arr3);
console.log(arr1);// ['1']
console.log(arr2);// ['2']
console.log(arr3);// ['3']
console.log(newArr);// ['1','2','3']
参数传递的值⽽不是数组,这些值会被添加到副本数组的末尾
var arr =['1'];
var newArr = at('2','3');
console.log(arr);// ['1']
console.log(newArr);// ['1','2','3']
参数可以为值和数组(不建议这样使⽤)
var arr =['1'];
var arr2 =['3'];
var newArr = at('2', arr2);
console.log(arr);// ['1']
console.log(arr2);// ['3']
console.log(newArr);// ['1','2','3']
2.数组删除
pop: 删除数组的末尾元素,返回它删除的元素的值,改变原数组
var arr =['1','2','3'];
var lastData = arr.pop();
console.log(arr);// ['1','2']
console.log(lastData);// '3'
shift: 删除数组的第⼀个元素,返回它删除的元素的值,改变原数组
var arr =['1','2','3'];
var firstData = arr.shift();
console.log(arr);// ['2','3']
console.log(firstData);// '1'
splice(index,howmany,item1,…,itemX): 删除从 index 处开始的零个或多个元素,返回被删除的元素的数组,第⼆个以后的参数为在index处插⼊的元素,改变原数组
从指定位置删除元素
var arr =['1','2','3'];
var deleteDataList = arr.splice(1,2);// 从下标1处删除两个元素
console.log(arr);// ['1']
console.log(deleteDataList);// ['2','3']
从指定位置插⼊多个元素
var arr =['1','2','5'];
var deleteDataList = arr.splice(2,0,'3','4');// 从下标为2的位置上插⼊多个元素
console.log(arr);// ['1','2','3','4','5']
console.log(deleteDataList);// [] //第⼆个参数为0 不删除元素
从指定位置删除元素并插⼊多个元素
var arr =['1','2','5'];
var deleteDataList = arr.splice(2,1,'3','4');// 从下标为2的位置上删除⼀个元素后,再插⼊多个元素
console.log(arr);// ['1','2','3','4']
console.log(deleteDataList);// ['5']
3.数组截取
slice(start,end):截取从 start 到 end (不包括该元素)中的元素,返回⼀个新的数组
⽆参数表⽰返回当前数组的⼀个副本,默认start为0,end为字符串长度length
var arr =['1','2','3'];
var newArr = arr.slice();
console.log(arr);// ['1','2','3']
console.log(newArr);// ['1','2','3']
console.log(newArr === arr);// false
只有⼀个参数,则该参数为start值,end默认为字符串长度length
var arr =['1','2','3'];
var newArr = arr.slice(1);
console.log(arr);// ['1','2','3']
console.log(newArr);// ['2','3']
两个参数,从start到end(不包括end下标的元素)
var arr =['1','2','3','4','5'];
var newArr = arr.slice(1,3);
console.log(arr);// ['1','2','3','4','5']
console.log(newArr);// ['2','3']
参数为负数,则规定从数组尾部开始算起的位置。也就是说,-1 指最后⼀个元素,-2 指倒数第⼆个元素,以此类推
var arr =['1','2','3','4','5'];
var newArr1 = arr.slice(-2);// 相当于arr.slice(arr.length + (-2)) -> arr.slice(3)
var newArr2 = arr.slice(0,-2);// 相当于arr.slice(0, arr.length + (-2)) -> arr.slice(0,3)
var newArr3 = arr.slice(-4,-2);// 相当于arr.slice(arr.length + (-4), arr.length + (-2)) -> arr.slice(1,3)
console.log(arr);// ['1','2','3','4','5']
console.log(newArr1);// ['4','5']
console.log(newArr2);// ['1','2','3']
console.log(newArr3);// ['2','3']
start参数⼤于等于数组长度,不管是否有end参数,结果返回空数组
var arr =['1','2','3','4','5'];
var newArr1 = arr.slice(5);// arr长度为5,start === arr.length
var newArr2 = arr.slice(6);// arr长度为5 start > arr.length
var newArr3 = arr.slice(5,1);// arr长度为5 start === arr.length
console.log(arr);// ['1','2','3','4','5']
console.log(newArr1);// []
console.log(newArr2);// []
console.log(newArr3);// []
start参数⼤于等于end参数,结果返回空数组
var arr =['1','2','3','4','5'];
var newArr1 = arr.slice(3,2);// arr长度为5 start参数⼤于end参数
var newArr2 = arr.slice(3,3);// arr长度为5 start参数等于end参数
console.log(arr);// ['1','2','3','4','5']
console.log(newArr1);// []
console.log(newArr2);// []
4.数组查
indexOf:返回数组中第⼀个满⾜条件的索引(从0开始), 不满⾜返回-1
只有⼀个参数的情况,参数表⽰要查的元素
var arr =['1','2','3'];
var checkElement1 = arr.indexOf('2');
var checkElement2 = arr.indexOf('4');
console.log(checkElement1);// 1
console.log(checkElement2);// -1
两个参数的情况,第⼀个参数表⽰要查的元素,第⼆个参数表⽰开始查的下标位置
var arr =['1','2','3'];
var checkElement1 = arr.indexOf('2',1);// 从下标为0的位置开始查元素‘2’
var checkElement2 = arr.indexOf('2',2);// 从下标为2的位置开始查元素‘2’
console.log(checkElement1);// 1
console.log(checkElement2);// -1
find():传参是⼀个函数,返回数组中第⼀个满⾜条件的数据,不满⾜返回undefined;使⽤find⽅法后,要对查询到的数据进⾏undefined的判断,才能正常使⽤数据
数组为⾮空数组
var arr =['1','2','3'];
var findData1 = arr.find(val => val ==='2');// 查元素值为‘2’的数据
var findData2 = arr.find(val => val ==='4');// 查元素值为‘4’的数据
console.log(findData1);// '2'
console.log(findData2);// undefined
数组为空数组,查询结果返回undefined
var arr =[];
var findData1 = arr.find(val => val ==='2');// 查元素值为‘2’的数据
var findData2 = arr.find(val => val ==='4');// 查元素值为‘4’的数据
console.log(findData1);// undefined
console.log(findData2);// undefined
includes():判断数组是否包含某值,返回 true 或 false
var arr =['1','2','3'];
var includeData1 = arr.includes('2');// 查数组是否存在元素值为‘2’的数据
var includeData2 = arr.includes('4');// 查数组是否存在元素值为‘4’的数据
console.log(includeData1);// true
console.log(includeData2);// fasle
5.数组遍历
forEach():传参为⼀个函数,数组⾥的元素个数有⼏个,该函数就会执⾏⼏次,不会⽣成新数组数组中的元素是基本数据类型,或者对象直接被赋值,不会改变原数组的数据
var arr =['1',2,true,undefined,Symbol(1),null,{}];// 数组元素为基本类型
var newArr = arr.forEach(function(val, index, array){
val ='change';
});
console.log(arr);// ['1', 2, true, undefined, Symbol(1), null, {}]
console.log(newArr);// undefined (forEach⽅法⽆返回值)
数组中的元素是对象,遍历更改对象属性值,会改变原数组对象属性的数据
filter过滤对象数组var arr =[{ a:1},{ a:2}];// 数组元素为对象
arr.forEach(function(val, index, array){
val.a = val.a *2;
});
console.log(arr);// [{ a: 2 }, { a: 4}]
循环过程中,回调⽅法中使⽤return不会报错,但是⽆效,不能跳出循环
var arr =[{ a:1},{ a:2}];
arr.forEach(function(val, index, array){
val.a = val.a *2;
if(index ===0){// 想要在符合条件时之后退出该return并不会跳出循环
return;
}
});
console.log(arr);// [{ a: 2 }, { a: 4}]
使⽤break和continue跳出整个循环或当前循环的,会报错
var arr =[{ a:1},{ a:2}];
arr.forEach(function(val, index, array){
val.a = val.a *2;
if(index ===0){
break;
}
});
map():传参为⼀个函数,函数必须有return,数组⾥的元素个数有⼏个,该函数就会执⾏⼏次,会返回⼀个新数组,不改变原数组的值
var arr =[1,2,3];
var newArr = arr.map(function(val){
return val *2
});
console.log(arr);// [1, 2, 3]
console.log(newArr);// [2, 4, 6]
filter():传参为⼀个函数,函数return ⼀个可以转化为boolean类型的值,遍历数组,过滤出符合条件的元素并返回⼀个新数组,不改变原数组的值
回调函数return⼀个boolean值
var arr =[1,2,3];
var newArr = arr.filter(function(val){
return val ===2
});
console.log(arr);// [1, 2, 3]
console.log(newArr);// [2]
回调函数return⼀个⾮boolean类型值,会总动转换为true或false
// 0、''、null、undefined 转化为boolean为false
var arr =[0,1,2,3,'',null,undefined,{},[]];
var newArr = arr.filter(function(val){
return val;
});
console.log(arr);// [0, 1, 2, 3, '', null, undefined, {}, []];
console.log(newArr);// [1, 2, 3, {}, []];
若没有符合条件的元素,则filter会返回⼀个空数组
var arr =[1,2,3];
var newArr = arr.filter(function(val){
return val ===4;
});
console.log(arr);// [1, 2, 3]
console.log(newArr);// []
some():传参为⼀个函数,函数return ⼀个可以转化为boolean类型的值,some返回值为⼀个boolean值,遍历数组,只要有⼀个元素满⾜条件就返回 true,否则返回 false;不改变原数组的值
var arr =[1,2,3];
var newArr = arr.some(function(val){
return val ===2;
});
console.log(arr);// [1, 2, 3];
console.log(newArr);// true;
当空数组调⽤some⽅法时,返回false;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论