数组属性、方法
数组
变量 :存储数据的,只能存储一个值
var name = "张三" ; var age = 12;
对象:本质特征和行为的事物 能存储一条数据
var obj = {name:"张三",age:12,score:100}
数组:可以存储一组(多条数据)或一系列相关数据的容器
数组元素:存储在数组中,并赋予唯一索引号(下标--从0开始)的数据段
数组元素的数据类型可以不相同
数组下标:标识数组元素的唯一索引号 最小下标 0 ,最大下标length-1
好处
可以集中管理,提高性能
声明数组
1:字面量方式 var 数组名 = []
2:构造函数的方式 var 数组名 = new Array()
有且仅有一个正整数作为参数,表示数组的长度 ,其他情况表示数组中的元素
数组的属性
数组名.length 返回数组的长度
数组的数据类型
object
遍历数组(循环数组)
// 遍历数组 读取数组中的所有数组元素
// 下标 从0开始 length-1结束
for (var i = 0; i < arr.length; i++) {
console.log(arr[i])
}
方法(增,删,改,截,拼,复,排,转)
增
// 增
/*
unshift(新增元素)
在数组的前面增加新的元素
新增后数组的长度
是否影响原数组:是
*/
var arr = [5, 6, 4, 5, 6, 7]
var res = arr.unshift(4, [1, 2, 3], 5)
// console.log(res) //9
// console.log(arr)
/*
后增 push(新增元素)
在数组的尾部增加新的元素
返回值:新增后数组的长度
是否影响原数组:是
*/
var arr1 = [2, 3, 4, 5, 6, 7]
var res1 = arr1.push(4, [1, 2, 3], 4)
console.log(res1) //9
console.log(arr1)
删
/*
shift()
删除数组首部的元素,一次只能删除一个元素
返回值:返回被删除的元素
是否影响原数组:是
*/
var arr = [2, 3, 4, 5, 6, 78, 88]
var res = arr.shift()
// console.log(res)//2
// console.log(arr)
/*
pop()
删除数组尾部的元素,一次只能删除一个元素
返回值:返回被删除的元素
是否影响原数组:是
*/
var arr1 = [23, 5, 6, 7, 8, 3, 5, 4, 2, 1]
var res1 = arr1.pop()
console.log(res1) //1
console.log(arr1) // [23, 5, 6, 7, 8, 3, 5, 4, 2]
改
/* splice(从哪个下标开始,删除的长度,新增的元素,....)
作用:在数组的任意位置可以实现增,删,改
返回值:被删除的元素数组
是否影响原数组:是 */
// var arr = [5, 6, 7, 8, 9]
// var res = arr.splice(2)
// console.log(res) //[7, 8, 9]
// console.log(arr) //[5, 6]
// var arr = [5, 6, 7, 8, 9]
// var res = arr.splice(2, 1)
// console.log(res) //[7]
// console.log(arr) //[5, 6, 8, 9]
// var arr = [5, 6, 7, 8, 9]
// var res = arr.splice(2, 1, [1, 2, 3], true)
// console.log(res) // [7]
// console.log(arr) // [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]
拼
/*
concat(拼接的元素)
作用:将新的元素拼接到指定的数组后面,形成新的数组(新数组中有数组,则将最外层数组拆开进行拼接)
返回值:拼接后的新数组
是否影响原数组:否 */
var arr = [5, 6, 7, 8, 9]
var res = arr.concat(-4, -2, [2, 3, [4, 6]], 10)
console.log(res) // [5, 6, 7, 8, 9, -4, -2, 2, 3, [4, 6], 10]
console.log(arr) //[5, 6, 7, 8, 9]
截
// slice
/*
slice(start,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 res = arr.slice(2, 4)
// console.log(res) //[7, 8]
// console.log(arr) //[5, 6, 7, 8, 9]
// var res = arr.slice(4, 2)
// console.log(res) //[]
// console.log(arr) //[5, 6, 7, 8, 9]
var res = arr.slice(-4, -2)
console.log(res) //[6,7]
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]