数组的常用方法
- concat() 合并数组
let arr = [11, 22, 33, 44, 55];
let arr2 = [66, 99, 33, 77];
console.log(arr.concat(arr2)); //[11, 22, 33, 44, 55, 66, 99, 33, 77]
- push() 在数组的末尾添加元素,改变原数组
let arr = [11, 22, 33, 44, 55];
arr.push("dd");
console.log(arr);//[11, 22, 33, 44, 55,dd]
- unshift() 在数组的开头添加元素,改变原数组
let arr = [11, 22, 33, 44, 55];
arr.unshift("ff");
console.log(arr);//[ff, 11, 22, 33, 44, 55]
- pop() 删除数组的最后一个元素,改变原数组
let arr = [11, 22, 33, 44, 55];
arr.pop();
console.log(arr);//[11, 22, 33, 44]
- shift() 删除数组最前面的一个元素,改变原数组
let arr = [11, 22, 33, 44, 55];
arr.shift();
console.log(arr);//[22, 33, 44 ,55]
- join() 将数组转换成字符串,默认以 “ , ”隔开,括号里面也可传入参数,如:“-”,则是以“-”隔开
let arr = [11, 22, 33, 44, 55];
console.log(arr.join());//11,22,33,44,55
//括号里面也可传入参数,如:“-”,则是以“-”隔开
console.log(arr.join("-"));//11-22-33-44-55
- toString() 将数组转换为字符串,默认以“,”,且无法改变其连接方式。
let arr = [11, 22, 33, 44, 55];
console.log(arr.toString()); //11, 22, 33, 44, 55
- sort() 数组的排序, 但是默认是以元素的首字符的ASCII码的值大小进行排序。
let arr = [2, 1, 4, 3, 5];
console.log(arr.sort()); //1, 2, 3, 4, 5
//但是,注意的是:看下面的例子就体现了以元素的首字符的ASCII码的值大小进行排序
let arr1 = [22, 1, 4, 3, 5];
console.log(arr.sort()); //1, 22, 3, 4, 5
- reverse() 数组的反转。
let arr = [11, 22, 33, 44, 55];
console.log(arr.toString()); //55, 44, 33 ,22 ,11
- splice(x[,y]);删除指定元素后的元素,x代表开始删除的元素下标,y可选填,代表删除的元素个数如果不写,就会从开始的下标删除到最后,返回一个被删除的元素组成的新数组,改变原数组。
let arr = [11, 22, 33, 44, 55];
let newArr = arr.splice(2,2);
console.log(arr); //[11, 22, 55] 原数组被改变。这是删除后的原数组
console.log(newArr); //[33, 44] 这是被删除的元素组成的新数组
//如果第二个参数后面还有参数,那么这些参数就会被当做新元素添加到原数组内(添加在被删除的元素的位置上),如下面的例子:
let newstr = arr.splice(1,2,555,888);
console.log(arr);//[11, 555, 888](上面的代码已经将原数组arr改变成了[11, 22, 55],所以这里的结果是[11, 555, 888])
- slice(x,y) 截取数组元素,x代表开始截取的元素下标,y代表结束截取的元素下标,如果只有一个参数的话,就会从开始的下标截取到最后。
let newArr=arr.slice(2,4);
console.log(newArr);//[33,44]
- indexOf() 查找数组中的某一个元素,如果查找到该元素就返回该元素第一次出现的下标,如果查找不到该元素就返回-1,默认从前往后查找。
let arr = [11, 22, 33, 44, 55];
let result1 = arr.indexOf(33);
let result2 = arr.indexOf(66);
console.log(result1); //2
console.log(result2); //-1
- lastIndexOf() 查找数组中的某一个元素,如果查找到该元素就返回该元素第一次出现的下标,如果查找不到该元素就返回-1,默认从后往前查找。
let arr = [11, 22, 33, 44, 55];
let result1 = arr.indexOf(33);
let result2 = arr.indexOf(66);
console.log(result1); //2
console.log(result2); //-1
数组的迭代方法
- forEach() 数组的循环遍历
let arr1 = [1, 5, 3, 6];
arr1.forEach((item,index)=>{
console.log(index + ":" + item);
/*输出结果:
0:1
1:5
2:3
3:6
*/
});
- filter() 数组的筛选,返回符合条件的新数组
let arr1 = [1, 5, 3, 6];
let res1 = arr1.filter((item,index)=>{
return item > 3;
});
console.log(res1); ///[5, 6],返回符合条件的新数组
- some() 检查数组中是否存在某一个元素,如果有一个满足条件就会返回true,否则就返回false
let arr1 = [1, 5, 3, 6];
let res2 = arr1.some((item)=>{
return item === 5;
})
console.log(res2); //true , 数组arr1 中存在元素5,故返回true
let res3 = arr1.some((item)=>{
return item === "5";
})
console.log(res3); //false , 数组中不存在元素 字符串5,故返回false
- every() 检查数组中是否存在某一元素,必须所有的条件都满足才会返回true,否则返回false
let arr1 = [1, 5, 3, 6];
let res4 = arr1.every((item, index) => {
return item > 0;
});
console.log(res4); //arr1中的所有元素都大于0 ,所以返回true
let res5 = arr1.every((item, index) => {
return item > 3;
});
console.log(res5); //arr1中并不是所有元素都大于3 ,所以返回false
- map() 返回一个新数组,此方法可以以一个函数为参数,循环数组的每一个元素,函数将数组中的元素接收为单个参数。
let arr1 = [1, 5, 3, 6];
let res6 = arr1.map((item) => {
return item * 2;
});
console.log(res6);//[2, 10, 6, 12]
console.log(arr1);//打印一下原数组可见,不改变原数组
- reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减(是个数递减,不是值),最终计算为一个值。
let arr1 = [1, 5, 3, 6];
let res7 = arr1.reduce((a, b) => {
return a+b;
});
console.log(res7);//15,数组arr1中元素的累加值
- findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。
findIndex() 方法为数组中的每个元素都调用一次函数执行:
- 当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
- 如果没有符合条件的元素返回 -1
注意: findIndex() 对于空数组,函数是不会执行的。
注意: findIndex() 并没有改变数组的原始值。
array.findIndex(function(currentValue, index, arr), thisValue)
| 参数 | 描述 |
|---|---|
| currentValue | 必需。当前元素 |
| index | 可选。当前元素的索引 |
| arr | 可选。当前元素所属的数组对象 |
| thisValue | 可选。 传递给函数的值一般用 "this" 值。 如果这个参数为空, "undefined" 会传递给 "this" 值 |