数组是什么东西?
数组可以说是一序列有序元素的集合。
怎么创建数组(一维数组)?
new Array();
let arr = new Array();
创建了一个长度为0的数组
new Array(size);
let arr = new Array(10);
创建了一个长度为10,内容为空的数组
new Array(ele0,ele1,ele2)
let arr = new Array(10,10,10,10,10);
创建了一个长度为5,内容为5个10的数组
上面的是利用构造函数实例化一个数组对象方式,
下面是直接定义一个数组
let arr = [1,2,3,4,5,6]
两种方式都可以创建数组
数组的方法:
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));
除了连接数组,是否可以连接元素呢
let arr3 = [7,8,9];
console.log(arr1.concat(1,2,3,4,5);
看来也是可以的
那还有一个问题,这个方法会对原数组产生影响吗?
let arr1 = [1,2,3];
let arr2 = [4,5,6];
let arr3 = [7,8,9];
arr1.concat(arr2,arr3);
console.log(arr1,arr2,arr3);
答案是不会
2. join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
语法:arrayObject.join(separator)
let arr1 = [1,2,3];
console.log(arr1.join("&"));
如果方法后面的参数没写的话,会自动默认分隔符为逗号。
3. pop() 删除并返回数组的最后一个元素
语法:arrayObject.pop()
let arr1 = [1,2,3];
console.log(arr1.pop());
console.log(arr1);
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);
添加元素和数组都是直接追加的,添加数组会产生一个二维数组
5. reverse() 颠倒数组中元素的顺序,并返回一个浅拷贝数组,把原数组实体的指针返回了
语法:arrayObject.reverse()
let arr1 = [1,2,3];
let arr2 = arr1.reverse(); // 当你更改arr2数组的值,arr1也会改变
console.log(arr2 );
console.log(arr1);
6. shift() 删除并返回数组的第一个元素
语法:arrayObject.shift()
let arr1 = [1,2,3];
console.log(arr1.shift());
console.log(arr1);
7. slice() 从某个已有的数组返回选定的元素,左开右闭
语法: arrayObject.slice(start,end)
let arr1 = [1,2,3,4,5,6];
console.log(arr1.slice(2,4));
console.log(arr1);
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);
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));
如果需要对数组中对象的属性值进行排序的话,就需要在原来的基础上加一个属性值了(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));
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);
可以看到删除后会以数组的形式返回一个被删除的部分,添加的部分会直接插入被删部位
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());
黑色字体表示是字符串,蓝色表示数字
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);
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);
14. valueOf() 返回数组对象的原始值
语法:arrayObject.valueOf()
let arr = [7,8,9,1,2,3];
console.log(arr.valueOf());
console.log(arr);
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));