参考教程:【尚硅谷】JavaScript基础&实战丨JS入门到精通全套完整版
参考文章:Han_python的博客的JavaScript专栏9.10
文章目录
使用构造函数Array()来创建数组
使用数组[索引] = 值
来为对象添加元素。使用数组[索引]
来访问对象。
数组中的元素可以是任何数据类型。
<script>
// 新建一个数组(类)的对象
var arr = new Array();
// 添加元素
arr[0] = 0;
arr[1] = 1;
// 读取元素
console.log(arr[0]) // 0
// 读取数组长度
console.log(arr.length) // 2
// 向数组的最后添加元素
arr[arr.length] = 2;
// 修改数组长度,修改前为3
arr.length = 5;
console.log(arr) // 看截图
console.log("arr : " + arr); // 两种打印方式,出来的效果不同
</script>
构造函数也可以直接传入数组元素
arr2 = new Array(1, 2, 3);
console.log("arr2 : " + arr2);
console.log(arr2.length) // 3
arr3 = new Array(3);
console.log("arr3 : " + arr3);
console.log(arr3.length) // 3
可以看到
创建
arr2
中,传入多个元素,它们都正常躺进了数组中。
创建arr3
时,只传入了一个整数3
,构造函数会创建一个长度为3的空数组。
探索: 如果传入单个元素时,该元素不是数字,是不是就可以创建一个元素的数组了?
var obj = new Object(3)
arr4 = new Array(obj);
console.log("arr4 : " + arr4); // arr4 : 3
console.log(arr4.length) // 1
console.log(arr4[0]) // 3
是的,可以!
Array类的方法
分类一下:
类型 | 方法介绍 |
---|---|
头尾操作 | pop(),删除并返回数组的最后一个元素 push(),向数组的末尾添加一个或更多元素,并返回新的长度。 shift(),删除并返回数组的第一个元素 unshift(),向数组的开头添加一个或更多元素,并返回新的长度。 |
部分操作 | slice()从某个已有的数组返回选定的元素 splice()删除元素,并向数组添加新元素。 |
整体操作 | reverse()颠倒数组中元素的顺序。 sort()对数组的元素进行排序 join()把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。 |
数组间操作 | concat()连接两个或更多的数组,并返回结果。 |
其他 | toString() 把数组转换为字符串,并返回结果。 toSource() 返回该对象的源代码。 valueOf() 返回数组对象的原始值 |
此外,使用属性prototype
,可以向对象添加属性和方法。
forEach()
方法
该方法需要一个函数作为参数,函数有一个形参,会依次将遍历到的元素作为实参的形式传递进来。IE8及以下的浏览器不兼容。
var arr = ["赵", "周", "李", "孙", "钱"];
arr.forEach(function (a) {
console.log(" 姓氏 = " + a);
})
slice(),splice()
函数
参考W3school:JavaScript slice() 方法
- 取一段
arrayObject.slice(start,end)
读取数组的索引start到end(不含)
元素并返回。不改变原数组。
start或end,如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end 如果没有指定,那么切分的数组包含从 start 到数组结束的所有元素。
使用: var result = arr.slice(开始索引,结束索引);
- 删一段,或者添一段,或者先删后添
函数原型:arrayObject.splice(index,howmany,item1,.....,itemX)
参数 | 描述 |
---|---|
index | 必需。 整数,规定添加/删除项目的位置, 使用负数可从数组结尾处规定位置。 |
howmany | 必需。 要删除的项目数量。 如果设置为 0,则不会删除项目。 |
item1, …, itemX | 可选。 向数组添加的新项目 |
var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"
arr.splice(2,0,"William")
// 若只写这句,效果是添加: George,John,William,Thomas,James,Adrew,Martin
arr.splice(2,1)
// 若只写这句,效果是删除: George,John,James,Adrew,Martin
arr.splice(2,1,"William")
// 若只写这句,效果是替换: George,John,William,James,Adrew,Martin
arr.splice(2,3,"William")
// 若只写这句,效果是替换: George,John,William,Martin
sort()
函数
sort()对于纯数组进行排序时,也是按照Unicode编码来排序。
我们可以通过传入一个回调函数来指定排序规则:
回调函数需要定义两个形参
浏览器会分别使用数组中的元素作为实参去调用回调函数
浏览器会根据回调函数的返回值来决定元素的顺序
如果返回值大于0,则元素会交换位置,否则不变。
arr = [5,4,2,1,6,6,2,3];
arr.sort(function(a,b){
return a-b; // 升序排列(非递减序列,且相等的值未改变先后次序)
});
console.log(arr);
如果需要降序排列,则返回b-a