数组的属性和方法

一、数组

1、数组的定义

数组是可以保存任意类型的数据集合
(1)构造函数方式实现
var a1=new Array() "空"数组

(2)直接量实现
var a1=[]

2、数组的数据操作

(1) a1[0]= 赋值
a1[0] 提取值
var a1=[]
a1=“hello”
var a1=[“a”,“b”,“c”]
console.log(a[1]) //b

(2) var a1=new Array() 可以指定长度
a1[0] --undefined

 var a2=[,,,,,]   长度是5,最后一个都不算

3、数组的遍历

(1)var a1=[21,32,43,54] 下标由0开始
for(var i=0;i<a1.length;i++){
console.log(a1[i])
}

(2) for in
for(var i in a1){
console.log(a1[i])
}

4、数组的添加与删除

push() 数组尾部增加数据,对原数组进行修改,返回修改后的数组长度
pop() 删除数组尾部一个元素,对原数组进行修改,返回被删除的元素

unshift() 头部增加元素,对原数组进行修改,返回修改后的数组长度
shift() 删除数组头部一个元素,对原数组进行修改,返回被删除的元素

 var a1=[31,56,12]
 a1.push[88]     //[31,56,12,88]
 a1.pop()        //[31,56,12]
 a1.pop()        //[31,56]

 a1.unshift()  //[88,31,56,12]
 a1.shift()    //[31,56,12]
 a1.shift()    //[56,12]

二、数组方法

1、reverse():对原数组进行反转

var a1=[23,12,56,34]
a1.reverse() //[34, 56, 12, 23]

2、join:指定分隔符,将数组转换为字符串,生成新的字符串

var a1=“he,ll,oo,mm”
字符串转数组
var a2=a1.split(“,”) //[he,ll,oo,mm]
数组转字符串
a2.join(“”) //helloomm
a2.join(“3”) //he3ll3oo3mm

3、concat

连接数组,将数据加到末尾
不修改原数组,生成新数组
只能打散一维数组,不会打散数组中包含的数组
a1=[1,2,3]
a2=[4,5,6]
a1.concat(a2) //[1, 2, 3, 4, 5, 6]
a1.concat(55,66) //[1, 2, 3, 55, 66]
a1.concat([33,88],[44,77]) //[1, 2, 3, 33, 88, 44, 77]
a1.concat([[11,22]],[33,44],“abc”) //[1, 2, 3, [11, 22], 33, 44, ‘abc’]

4、slice:截取子数组

(1)不修改原数组,生成新数组
(2)a2=a1.slice(2,4) 起始包含,终止不包含
(3)a2=a1.slice(2) 从起始到数组末尾
(4)a2=a1.slice(-4,-2) 如为负数从右到左截取
var a1=[12,34,45,67,89]
a2=a1.slice(2,4) //[45, 67]
a2=a1.slice(2) //[45, 67, 89]
a2=a1.slice(2,10) //[45, 67, 89]
a2=a1.slice(-4,-2) // [34, 45]

5、splice:增加和删除数组元素

splice(arg1,arg2,arg3…)
arg1 --起始位置
arg2 --被删除的元素个数
arg3及后面所有参数—要插入的元素

a1=[1,2,3,4,5,6,7]
a1.splice(1,2,3,4,5) //a1–[1, 3, 4, 5, 4, 5, 6, 7]

a2=a1.splice(2) //a1–[1,2] a2=[3,4,5,6,7]
如只有一个参数,从起始位置删除后面所有的元素,
修改原数组,返回被删除的元素
a1.splice(2,2) //a1–[1,2,5,6,7] a2=[3,4]

a1.splice(2,0) //a1–[1,2,3,4,5,6,7] a2=[]

a1.splice(2,0,0,0,0) //a1=[1, 2, 0, 0, 0, 3, 4, 5, 6, 7]
a1.splice(6,2,3,4) //a1=[1,2,3,4,5,6,3,4] a2=[7]
a1.splice(-2,-3,6,7,8)//如果第一个参数为负数,则从右到左查找
如第二个参数为负数,按0处理
a1=[[1, 2, 3, 4, 5, 6, 7, 8, 6, 7]]

6、数组删除

splice
delete:删除元素本身,不删除空间,不改变数组大小

console.log(a1) //[空, 4, 5]
console.log(a1.length) //3

五、数组下标

var a1=[4,5,6,7]
1.a1[0] 0 --下标
2.范围 大于0,小于2^32-1 整数
3.如下标是负数、浮点数、布尔型等,js会自动将其转换为字符串
var a1=[4,5,6,7]
a1[true] //undefined
w1={name:zs}
w1[name]
a1={true:}

 a1[-2]    //undefined
 a1[2.3]   //undefined

4、下标是可以不断递增的表达式
var a1=[]
for(var i=0;i<10;i++){
a1[i++]=i
}
—1,空,3,空,5,空,7,空,9

六、排序

数组.sort(比较函数)
比较函数--具有两个参数,f1(a,b)
      函数只判断返回值
      返回值大于0 a排在b的后面
      返回值小于0 a排在b的前面
      返回值等于0 a,b不动

1.var a1=[23,4,5,12,78,16]
a1.sort()   //[12, 16, 23, 4, 5, 78]

2.var a1=[23,4,5,12,78,16]
  function f1(a,b){
     //return a-b  
     if(a-b>0){
        return 1   a在b的后面
     }else if(a-b<0){
        return -1  a在b的前面
     }else{
        return 0   a,b不动
     }
  }
  a1.sort(f1)  //[4, 5, 12, 16, 23, 78]

七、数组函数

1、indexOf()

返回数组中第一个找到的元素的位置,不存在返回-1
a1=[“ab”,23,45,67]
a1.indexOf(“ab”) //0

2、forEach

数组.forEach(function(当前元素值,当前元素索引,数组对象){})
var a1=[4,5,6,7,8]
a1.forEach(function(item,index,arr){
console.log(item,index) //元素+索引
console.log(item,index,arr)// 元素+索引+数组本身
})

//前后台数据传输格式 ajax 数据
var data1=[{“name” : “zs”,“age”:23,“number”:“00123”},
{“name” : “ls”,“age”:32,“number”:“00124”},
{“name” : “ww”,“age”:30,“number”:“00125”}]
//data 1遍历
var max=0
var i=0
data1.forEach(function(item,index,arr){
console.log(“名字”+data1[index].name+“年龄”+data1[index].age+“学号”+data1[index].number)
max+=item.age
})
console.log(“平均年龄”+parseInt(max/data1.length))

3、map

对数组每一项进行遍历
数组.map(function(当前元素值,当前元素索引,数组对象){})

a1=[3,4,5,6] 生成 a2=[6,8,10,12]
var a2=a1.map(function(item,index,arr){
return item*2
})

****map与forEach区别
1、forEach只是遍历,map可以生成新数组
2、map比forEach速度快
3、map可以进行链式操作

var a1=[3,4,5,6]

var a2=a1.map(function(item,index,arr){
return item2
}).map(function(item1){
return item1
10
})
console.log(a2)

4、filter 数据过滤

(1)返回新数组,不对原数组修改
(2)对返回true的结果过滤,false的结果忽略

arr.filter(function(当前元素值,当前元素索引,数组对象){})
a1=[10,30,40,60,80] 提取大于30的数据
a1.filter(function(item,){
return item>30
})

5、reduce

接收一个函数作为累加器,数组中的每一个值从左到右开始缩减
最终计算为一个值
arr.reduce(function(初始值,当前元素值,当前元素索引,数组对象){},初始值(可省略))

6、some 判断数组是否有满足条件的元素

(1)arr.some(function(当前元素值,当前元素索引,数组对象){})
(2)函数内部,返回true,找到了满足条件的元素,则循环结束
返回false,没有找到,循环继续
(3)函数的执行次数不一定等于数组的长度

a1=[10,30,5,60] 判断数组是否有大于20的元素
a1.some(function(item,index,arr){
return item>20
})
a2—true

7、every 检查数组中所有元素是否都满足条件

(1)arr.every(function(当前元素值,当前元素索引,数组对象){})
(2)有一项不满足就返回false,都满足返回true
(3)函数的执行次数不一定等于数组的长度

a1=[10,30,60] 判断数组是否都大于0
a1=[10,30,60]
a2=a1.every(function(item,index,arr){
return item>0
})
console.log(a2) //true

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秃头程序员-疯子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值