关于数组(Array)的创建和方法的使用

数组是什么东西?

数组可以说是一序列有序元素的集合。

 

怎么创建数组(一维数组)?

new Array();

let arr = new Array();

1

创建了一个长度为0的数组

new Array(size);

let arr = new Array(10);

2

创建了一个长度为10,内容为空的数组

new Array(ele0,ele1,ele2)

let arr = new Array(10,10,10,10,10);

3

创建了一个长度为5,内容为5个10的数组

上面的是利用构造函数实例化一个数组对象方式,

下面是直接定义一个数组

let arr = [1,2,3,4,5,6]

4

两种方式都可以创建数组

数组的方法:

1. concat()  连接两个或更多的数组,并返回结果,返回一个深拷贝数组。

语法:arrayObject.concat(arrayX,arrayX,......,arrayX)

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

5

除了连接数组,是否可以连接元素呢

let arr3 = [7,8,9];
console.log(arr1.concat(1,2,3,4,5);

6

看来也是可以的

那还有一个问题,这个方法会对原数组产生影响吗?

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

7

答案是不会

2. join()   把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

语法:arrayObject.join(separator)

    let arr1 = [1,2,3];
     console.log(arr1.join("&"));

8

如果方法后面的参数没写的话,会自动默认分隔符为逗号。

3. pop() 删除并返回数组的最后一个元素

语法:arrayObject.pop()

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

9

4. push() 向数组的末尾添加一个或更多元素,并返回新的长度。

语法:arrayObject.push(newelement1,newelement2,....,newelementX)

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

10

添加元素和数组都是直接追加的,添加数组会产生一个二维数组

5. reverse() 颠倒数组中元素的顺序,并返回一个浅拷贝数组,把原数组实体的指针返回了

语法:arrayObject.reverse()

    let arr1 = [1,2,3];

    let arr2 = arr1.reverse();   // 当你更改arr2数组的值,arr1也会改变
     console.log(arr2 );   
     console.log(arr1);   

12

6.  shift() 删除并返回数组的第一个元素

语法:arrayObject.shift()

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

13

7. slice() 从某个已有的数组返回选定的元素,左开右闭

语法: arrayObject.slice(start,end)

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

14

8. sort() 对数组的元素进行排序(排序顺序是根据字符串UniCode码),并返回一个浅拷贝数组

语法:arrayObject.sort(sortby)

sortby参数   可选。规定排序顺序。必须是函数。

    let arr1 = [1,6,2,1,5,6];
     let arr2 = ["s","a","c","z","q",1];
     console.log(arr1.sort());
     console.log(arr2.sort());   
     console.log(arr1,arr2);   

15

    function sortArr(a,b){
         return a - b;
     }
     let arr1 = ["1","6","2","1","1000","100"];
     let arr2 = ["1","6","2","1","1000","100"];
     console.log(arr1.sort());
     console.log(arr2.sort(sortArr));   

16

如果需要对数组中对象的属性值进行排序的话,就需要在原来的基础上加一个属性值了(a,b是数组中的元素,a>b是顺序,a<b是倒叙,等于是原数组)

let arr1 =
[
     {"num":1},
     {"num":3},
     {"num":4},
     {"num":2},
     {"num":1},
     {"num":5},

]
let arr2 =
[
     {"num":1},
     {"num":3},
     {"num":4},
     {"num":2},
     {"num":1},
     {"num":5},

]
function sortArr1(a,b){
     return a - b
}
function sortArr2(a,b){
     let value1 = a.num;
     let value2 = b.num;
     if (value1 > value2) {
         return 1;
     }else if(value1 < value2){
         return -1;
     }else{
         return 0;
     }
}
console.log(arr1.sort(sortArr1));
console.log(arr2.sort(sortArr2));   

17                                                                                                                               

9. splice() 删除元素,并向数组添加新元素,并返回一个删除部分的深拷贝数组(重新开辟一个内存空间存放得到的数组)

语法:arrayObject.splice(index,howmany,item1,.....,itemX)   index从哪里开始删除  howmany删除的个数,items是需要添加的新元素

let arr = [7,8,9,1,2,3];
console.log(arr.splice(0,2,[1,2]));
console.log(arr);

18

可以看到删除后会以数组的形式返回一个被删除的部分,添加的部分会直接插入被删部位

10. toSource() 返回该对象的源代码。

语法:object.toSource()

了解一下即可,只有Gecko 核心的浏览器(比如 Firefox)支持该方法

11.toString()  把数组(不局限于数组)转换为字符串,并返回结果。

let arr1 = [7,8,9,1,2,3];
let num = 1;
console.log(arr1.toString());
console.log(num.toString());

19

黑色字体表示是字符串,蓝色表示数字

12. toLocaleString() 把数组转换为本地(基于你的计算机环境)字符串,并返回结果。

语法:arrayObject.toLocaleString()

let arr1 = [7,8,9,1,2,3];
let obj = 111111;
console.log(arr1.toLocaleString());
console.log(arr1);
console.log(obj.toLocaleString());
console.log(obj);

let date = new Date();
console.log(date.toLocaleString());
console.log(date.toString());
console.log(date);

20

toLocaleString 转换日期时,将日期转换成我们熟悉的本地时间格式(以字符串形式),toString仅仅是将date转换成字符串

13. unshift() 向数组的开头添加一个或更多元素,并返回新的长度。

语法:arrayObject.unshift(newelement1,newelement2,....,newelementX)

let arr = [7,8,9,1,2,3];
console.log(arr.unshift(555,666,[111,2,22, ,]));   //返回的是新数组的长度
console.log(arr);

21

14. valueOf() 返回数组对象的原始值

语法:arrayObject.valueOf()

let arr = [7,8,9,1,2,3];
console.log(arr.valueOf());
console.log(arr);

22

 15. map()  循环一个数组,如果有返回内容的话,会新开辟一个空间存储(深拷贝)

  语法: 

 ```

var new_array = arr.map(function callback(currentValue[, index[, array]]) {
 // Return element for new_array 
}[, thisArg])

 ```

 16. from() 将伪数组对象和对象转换成数组

 17. of() 将一组值,转换为数组。

 18. copyWithin()

 19. find()

 20. findIndex(),indexOf()

 21. fill()

 22. entries, keys, values

 23. includes()

 24. flat, flatMap

扩展一个字符串转换数组方法的:

split() 把一个字符串分割成字符串数组。

语法:stringObject.split(separator,howmany)

let str1 = "I,am,your,father";
let str2 = "Iamyourfather";
console.log(str1.split(",",3));
console.log(str1);
console.log(str2.split("",2));

24

NO MAN IS A ISLAND
原文地址:https://www.cnblogs.com/nomanisaisland/p/11300297.html