806笔记(数组)
数组
变量:存储数据的,只能存储一个值
var name='张三'; var age=12;
对象:有本质特征和行为的事物,能存储一条数据(里面可以有多个字段)
var obj={name:'张三',age=12,score:100}
数组:可以存储一组(多条数据)或者一系列相关数据的容器。
好处:可以集中管理数据,提高了性能
数组元素:存储在数组中,并赋予唯一的索引号(下标---从0开始)的数据段。数组元素的数据类型可以不相同。
数组下标:标识数组元素的唯一索引号。最小下标0,最大下标length-1
声明数组
第一种方式:字面量方式 var 数组名=[]
var arr=[1,2,true,'张三',null]
查看数组长度
console.log(arr.length)
向数组中添加数据 数组名[下标]=值
arr[5]=false;
修改数组数据
arr[2]=123
读取数组元素 数组名[下标];没有这个下标的值的时候返回undefined
console.log(arr[2])
第二种方式:构造函数的方式 var 数组名=new Array()
var arr1=new Array() //创建了一个空数组
console.log(arr1) //[]
------------
var arr2=new Array(5,6,23)
console.log(arr2) //[5,6,23]
------------
//构建函数的时候有且仅有一个正整数作为参数,表示数组的长度。
var arr3=new Array(6) //length=6
console.log(arr3) //[空属性*6]
//需要向空数组中添加数组元素
arr3[0]=1;
arr3[1]=2;
arr3[2]=3;
arr3[3]=4;
arr3[4]=5;
console.log(arr3) //[1,2,3,4,5,空属性*1]
//这样添加很麻烦,可以通过循环向数组中添加元素
fot(var i=0;i<6;i++){
arr3[i]=parseInt(prompt('请输入第'+(i+1)+'个成绩'))
}
console.log(arr3)
--------------
//参数为其他情况时表示数组中的元素
var arr3=new Array('6')
console.log(arr3) // ['6']
数组的属性
-
数组名.length -----返回数组的长度
-
数组的数据类型是object
console.log(typeof arr)
遍历数组(就是循环数组)
var arr=[1,34,3,4,5,6]
//遍历数组 读取数组中的所有数据元素
//下标从0开始到length-1结束
for(var i=0;i<arr.length;i++){
console.log(arr[i])
}
</script>
方法(增,删,改,截,拼,复,排,转)
前增 unshift(新增元素)
/* unshift(新增元素):在数组的前面增加新的元素
是否影响原数组:是
返回值是新增后数组的长度
*/
var arr = [5, 6, 4, 5, 6, 7]
var res = arr.unshift(4, [1, 2, 3], 5)
console.log(arr)
console.log(res) //9
后增 push(新增元素)
/* 后增 push(新增元素):在数组的尾部增加新的元素
是否影响原数组:是
返回值是新增后数组的长度
*/
var arr1 = [2, 3, 4, 5, 6, 7]
var res1 = arr1.push(4, [1, 2, 3], 4)
console.log(arr1)
console.log(res1) //9
首删 shift()
/* shift()
删除数组首部的元素,一次只能删除一个
是否影响原数组:是
返回值是被删除的元素 */
var arr = [2, 3, 4, 5, 6, 78, 88]
var res = arr.shift()
console.log(arr)
console.log(res) //2
尾删 pop()
/* pop()
删除数组尾部的元素,一次只能删除一个
是否影响原数组:是
返回值是被删除的元素 */
var arr1 = [23, 5, 6, 7, 8, 3, 5, 4, 2, 1]
var res1 = arr1.pop()
console.log(res1) //1
console.log(arr1)
改 splice()
/* splice(从哪个下标开始删除(含), 删除的长度, 新增的元素, ...)
在数组的任意位置可以实现增删改
返回值: 被删除的元素数组
是否影响原数组:是 */
删---------------------------
var arr2 = [5, 6, 7, 8, 9]
var res2 = arr.splice(2)
console.log(res2) //[7,8,9]
console.log(arr2) //[5,6]
删几个------------------------
var arr3 = [5, 6, 7, 8, 9]
var res3 = arr.splice(2, 1)
console.log(res3) //[7]
console.log(arr3) //[5,6,8,9]
删同时新增---------------------
var arr4 = [5, 6, 7, 8, 9]
var res4 = arr.splice(2, 1, [1, 2, 3], true) //删除从下标为2开始的一个值,然后在这个位置插入[1,2,3],true
console.log(res4) //7
console.log(arr4) //[5,6,[1,2,3],true,8,9]
不删只新增---------------------
var arr = [5, 6, 7, 8, 9]
var res = arr.splice(2, 0, [1, 2, 3], true)
console.log(res) // []
console.log(arr) //[5, 6, [1, 2, 3], true,7, 8, 9] 会加在7的前面,下标为2的位置
//返回值为空的数组[]
截 slice(start,end)
/* slice 截取指定范围的数组元素
slice(start,end) 从start开始(含),到end结束(不包含),可以不写end的值
返回值:被截取的新数组
是否影响原数组:否*/
var arr = [5, 6, 7, 8, 9]
var res = arr.slice(2)
console.log(res) //[7,8,9]
console.log(arr) //[5,6,7,8,9]
--------------------
var arr = [5, 6, 7, 8, 9]
var res = arr.slice(2, 4)
console.log(res) //[7,8]
console.log(arr) //[5,6,7,8,9]
---------------------
var arr = [5, 6, 7, 8, 9]
var res = arr.slice(4, 2)
console.log(res) //[] 截取不到
console.log(arr) //[5,6,7,8,9]
---------------------
var arr = [5, 6, 7, 8, 9]
var res = arr.slice(-4, -2)
console.log(res) //[6,7] 从后往前数,倒数第四个(含)到倒数第二个(不包含),不从0开始了
console.log(arr) //[5,6,7,8,9]
拼 concat(拼接的元素)
/* concat(拼接的元素)
作用:将新的元素拼接到指定的数组后面,形成新的数组(新数组中有数组,则将最外层数组拆开进行拼接)
在数组的任意位置可以实现增删改
返回值: 拼接后的新数组
是否影响原数组:否 */
var arr = [5, 6, 7, 8, 9]
var res = arr.concat(-4, -2, [2, 3, [4, 5, 6], 10])
console.log(res) //[5,6,7,8,9,-4,-2,3,4,[4,6],10]
//这里新数组中的外层数组被拆开了
console.log(arr) //[5,6,7,8,9]
复 --- >给到新数组
var arr = [5, 6, 7, 8, 9]
var list = []
function fnCopyArr(arr) {
return arr.slice(0)
}
list = fnCopyArr(arr)
arr[0] = 4
console.log(arr.list) //[4,6,7,8,9][5,6,7,8,9]
---------------------------
var arr = [5, 6, 7, 8, 9]
var list = []
function fnCopyArr1(arr) {
return arr.concat()
}
list = fnCopyArr1(arr)
arr[0] = 4
console.log(arr, list) //[4, 6, 7, 8, 9] [5, 6, 7, 8, 9]
---------------------------
var arr = [5, 6, 7, 8, 9]
var list = []
function fnCopyArr2(arr) {
var list = []
for (var i = 0; i < arr.length; i++) {
list[i] = arr[i]
}
return list
}
list = fnCopyArr2(arr)
arr[0] = 4
console.log(arr, list)//[4, 6, 7, 8, 9] [5, 6, 7, 8, 9]
-----------------------------
var arr = [5, 6, 7, 8, 9]
var list = []
function fnCopyArr3(arr) {
var list = []
for (var i = 0; i < arr.length; i++) {
list.push(arr[i])
}
return list
}
list = fnCopyArr3(arr)
arr[0] = 4
console.log(arr, list) //[4, 6, 7, 8, 9] [5, 6, 7, 8, 9]
浙公网安备 33010602011771号