数组Array方法

一、创建

1)使用Array构造函数

var arr1 = new Array();
         = new Array(num); //num = length长度
         = new Array('arr1','arr2',...); //包含这些项

2)使用var let  const

var arr1 = [];
         = [num]; //包含这一项
         = ['arr1','arr2',...]; //包含这些项

 1、使用Array.of()方法

创建一个包含所有参数的数组

let arr = Array.of();    //[]
let arr1 = Array.of(1, 2, 3, 4, 5);    // [1, 2, 3, 4, 5]
let arr2 = Array.of(undefined);    // [undefined]

二、方法

(一)不改变原数组

2、join

该方法可以将数组里的元素,通过指定的分隔符,以字符串的形式连接起来。

返回值:返回一个新的字符串

let arr = ['h','e','l','l','o','!'];
let arr1 = arr.join();   // 'h,e,l,l,o,!'
let arr2 = arr.join('');   // 'hello!'
console.log(arr);   // ['h','e','l','l','o','!']

3、find

找到符合条件的项,并且返回第一项

let arr = [1, 2, 3, 4, 5];
let arr1 = arr.find(ele=> ele > 2);   // 3
console.log(arr);   // [1, 2, 3, 4, 5]

4、findIndex

找到符合条件的项的下标,并且返回第一个

let arr = [1, 2, 3, 4, 5];
let arr1 = arr.findIndex(ele=> ele > 2);   // 2
console.log(arr);   // [1, 2, 3, 4, 5]

5、indexOf (ele,fromIndex)

从fromIndex这个下标开始,元素第一次出现的位置

let arr = [1, 2, 3, 4, 5, 1];
let arr1 = arr.indexOf(1);   // 0
let arr2 = arr.indexOf(1,1);   // 5
let arr3 = arr.indexOf(6);   // -1
console.log(arr);   // [1, 2, 3, 4, 5, 1]

6、lastIndexOf()

在数组中搜索指定项,并返回其位置。

let arr = [1, 2, 3, 4, 5, 1];
let arr1 = arr.lastIndexOf(1);   // 5
let arr2 = arr.lastIndexOf(1,1);   // 0
let arr3 = arr.lastIndexOf(6);   // -1
console.log(arr);   // [1, 2, 3, 4, 5, 1]

7、concat()

用于连接两个或多个数组。

let arr = [1, 2, 3, 4, 5];
let arr1 = [6, 7, 8]
let arr2 = arr.concat(arr1);   // [1, 2, 3, 4, 5, 6, 7, 8]
console.log(arr,arr1);   // [1, 2, 3, 4, 5],[6, 7, 8]

8、slice(start,end)

start:开始下标 end:结束下标

将数组中的选定元素作为新的数组对象返回。

let arr = [1, 2, 3, 4, 5];
let arr1 = arr.slice(2)   // [3, 4, 5]
let arr2 = arr.slice(2,4);   // [3, 4]
console.log(arr);   // [1, 2, 3, 4, 5]

9、toString()

返回一个包含所有数组值的字符串,以逗号分隔。

let arr = ['h','e','l','l','o','!'];
let arr1 = arr.toString()    // 'h,e,l,l,o,!'
console.log(arr);    // ['h','e','l','l','o','!']

(二)改变原数组

10、fill(val,start,end)

val:填充值  start,end:可空,全空表示全替换,一个有值,表示从该位置后全替换

let arr = [1, 2, 3, 4, 5];
let arr1 = arr.fill(1);   // [1, 1, 1, 1, 1]

let arr2 = [1, 2, 3, 4, 5];
let arr3 = arr2.fill(1,3);   // [1, 2, 3, 1, 1]
        
let arr4 = [1, 2, 3, 4, 5];
let arr5 = arr4.fill(1,2,4);   // [1, 2, 1, 1, 5]

console.log(arr,arr2,arr5);   // [1, 1, 1, 1, 1],[1, 2, 3, 1, 1],[1, 2, 1, 1, 5]

11、copyWithin(target,start,end)

target:要被替换的索引位置  start:拷贝的开始下标 end:拷贝的结束下标

将数组元素复制到数组中的另一个位置,覆盖现有值。此方法永远不会向数组添加更多项。注意:此方法会覆盖原始数组。

let arr = [1, 2, 3, 4, 5];
let arr1 = arr.copyWithin(1,2,3);   // [1, 3, 3, 4, 5]
console.log(arr);   // [1, 3, 3, 4, 5]

12、pop()

删除并返回数组的最后一个元素。

let arr = [1, 2, 3, 4, 5];
let arr1 = arr.pop()   // 5
console.log(arr);   // [1, 2, 3, 4]

13、push()

将新项添加到数组的末尾,并返回新长度。

let arr = [1, 2, 3, 4, 5];
let arr1 = arr.push(6)   // 6
console.log(arr);   // [1, 2, 3, 4, 5, 6]

14、shift()

删除并返回第一个元素。

let arr = [1, 2, 3, 4, 5];
let arr1 = arr.shift()   // 1
console.log(arr);   // [2, 3, 4, 5]

15、unshift()

将新项添加到数组的开头,并返回新长度。

let arr = [1, 2, 3, 4, 5];
let arr1 = arr.unshift(0)   // 6
console.log(arr);    // [0, 1, 2, 3, 4, 5]

16、splice(下标、数量、添加新项)

从数组添加/删除项目,并返回删除的项目。

let arr = [1, 2, 3, 4, 5];
let arr1 = arr.splice(2)   // [3, 4, 5]

let arr2 = [1, 2, 3, 4, 5]; 
let arr3 = arr2.splice(2,1)   // [3]

let arr4 = [1, 2, 3, 4, 5]; 
let arr5 = arr4.splice(2,0,6)   // [1, 2, 6, 3, 4, 5]

console.log(arr,arr2,arr4);    // [0, 1, 2, 3, 4, 5],[1, 2, 4, 5],[1, 2, 6, 3, 4, 5]

17、reverse()

反转数组中元素的顺序。

let arr = [1, 2, 3, 4, 5];
let arr1 = arr.reverse()   // [5, 4, 3, 2, 1]
console.log(arr);    // [5, 4, 3, 2, 1]

18、sort()

对数组的项进行排序。

let arr = [1, 2, 3, 4, 5, 0, 7, 6];
let arr1 = arr.sort()   // [0, 1, 2, 3, 4, 5, 6, 7]

let arr2 = [1, 2, 3, 4, 5, 0, 7, 6];
let arr3 = arr2.sort((a,b)=>{
    return b-a
}) // [7, 6, 5, 4, 3, 2, 1, 0]

console.log(arr,arr2);    // [0, 1, 2, 3, 4, 5, 6, 7],[7, 6, 5, 4, 3, 2, 1, 0]

(三)其他方法

下列方法本身不会改变原数组任何属性,但是强行访问内部进行重新赋值时会改变原数组。

 19、every()

检查数组中的所有元素是否都符合条件。 true/false

let arr = [1, 2, 3, 4, 5];
let arr1 = arr.every(ele=> {return ele > 0});   // true
let arr2 = arr.every(ele=> {return ele > 2});   // false

let arr3 = [1, 2, 3, 4, 5];
let arr4 = arr3.every((ele,index)=> { 
    arr3[index] = ele + 1; 
    return ele > 0
});    // true

console.log(arr,arr3);   // [1, 2, 3, 4, 5],[2, 3, 4, 5, 6]

20、some()

检查数组中是否有元素符合条件。 true/false

let arr = [1, 2, 3, 4, 5];
let arr1 = arr.some(ele=> {return ele > 0});   // true
let arr2 = arr.some(ele=> {return ele > 6});   // false

let arr3 = [1, 2, 3, 4, 5];
let arr4 = arr3.some((ele,index)=> { 
    arr3[index] = ele + 1; 
    return ele > 0
});    // true
console.log(arr,arr3);   // [1, 2, 3, 4, 5],[2, 3, 4, 5, 6]

21、forEach()

遍历,可能会改变原数组。

let arr = [1, 2, 3, 4, 5];
arr.forEach(ele=> {
    ele + 1
});   // [1, 2, 3, 4, 5]

let arr1 = [1, 2, 3, 4, 5];
arr1.forEach((ele,index)=> {
    arr1[index] = ele + 1
});   // [2, 3, 4, 5, 6]

22、map()

遍历,返回新数组。

let arr = [1, 2, 3, 4, 5];
let arr1 = arr.map(ele=> {
    ele + 1
    return ele + 1
});   // [2, 3, 4, 5, 6]

let arr2 = [1, 2, 3, 4, 5];
let arr3 = arr2.map((ele,index)=> {
    arr2[index] = ele + 1
    return ele + 2
});   // [3, 4, 5, 6, 7]

console.log(arr,arr2);   //[1, 2, 3, 4, 5],[2, 3, 4, 5, 6]

23、filter()

过滤满足条件的值,返回新数组。

let arr = [1, 2, 3, 4, 5];
let arr1 = arr.filter(ele=>{
    return ele > 2
})    // [3, 4, 5]

let arr2 = [1, 2, 3, 4, 5];
let arr3 = arr2.filter(ele=>{
    ele ++
    return ele > 2
})    // [2, 3, 4, 5]

let arr4 = [1, 2, 3, 4, 5];
let arr5 = arr4.filter((ele,index)=>{
    arr4[index] = ele + 1;
    return ele > 2
})    // [3, 4, 5]

console.log(arr,arr2,arr4);    // [1, 2, 3, 4, 5],[1, 2, 3, 4, 5],[2, 3, 4, 5, 6]

24、reduce()

为数组的每个值(从左到右)执行提供的函数,并将数组缩减为单个值。

常用于叠加

let arr = [1, 2, 3, 4, 5];
let arr1 = arr.reduce((a,b)=> a + b)    // 15

let arr2 = [1, 2, 3, 4, 5];
let arr3 = arr2.reduce((prev,cur,index,arr)=>{
    arr2[index] = cur + 1;
    return prev + cur
})    // 15

console.log(arr,arr2);    // [1, 2, 3, 4, 5],[1, 3, 4, 5, 6]

25、reduceRight()

为数组的每个值(从右到左)执行提供的函数,并将数组缩减为单个值,可给想返回的数据类型

let arr = [1, 2, 3, 4, 5];
let arr1 = arr.reduceRight((a,b)=> a + b)    // 15

let arr2 = [1, 2, 3, 4, 5];
let arr3 = arr2.reduceRight((prev,cur,index,arr)=>{
    arr2[index] = cur + 1;
    return prev + cur
})    // 15

console.log(arr,arr2);    // [1, 2, 3, 4, 5],[2, 3, 4, 5, 5]

26、Array.from()

将类数组转换为数组

let arr = '12345'; 
let arr1 = Array.from(arr)    // ['1', '2', '3', '4', '5']
let arr2 = Array.from(arr, ele=> ele*2)    // [2, 4, 6, 8, 10]

let arr3 = [1, 2, 3, 4, 5]; 
let arr4 = Array.from(arr3, (ele,index)=> {
    arr3[index] = ele * 2;
    return ele*2
})    // [2, 4, 6, 8, 10]

console.log(arr,arr3);  //'12345',[2, 4, 6, 8, 10]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃彩虹吐司的安琪拉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值