数组的类
数组的类是Array
数组的定义
var arr=[元素]
var arr=new Array(3) 数字3,代表有三个元素或者三个空位
如果数组定义采用 new 实例,类中跟的是一个数字 n ,代表有 n 个元素
var arr=new Array("6") 有一个元素,并且这个元素是6
数组的方法
of 方法
1. Array 类上的方法
2. var arr=Array.of(4);console.log(arr); //4 返回一个元素为4的数组
foreach 方法
1. 原型上的一个方法,用于对数组遍历,返回值是undefined
2. var arr = ["xiaopang", "xiaohe", "xiaoxin"];
arr.forEach((item,index)=>{
console.log(index)
})
3. foreach 没有返回值
map 方法
1. 遍历数组(原型上的一个方法,返回值是一个数组,所以必须加 return 返回值),将数组一一映射成一个新的数组,内部一定要使用return
2. var arr = ["xiaopang", "xiaohe", "xiaoxin"];
var as=arr.map((item,index)=>{
return item+"123"
})
console.log(as)
filter 方法
1. 过滤 从数组中找出所有符合条件的元素,并返回一个新的数组,不改变原有数组
2. return true 就保留原来的数组,return false 就不保留
3. 当return 的条件成立就是 true ,不成立就是 false
4. var arr=[
{"name":"xiaopang","age":10},
{"name":"xiaohe","age":20},
{"name":"xiaoxin","age":25},
{"name":"pangpang","age":13}
]
var as=arr.filter((item,index)=>{
return item.age>13
})
console.log(as)
5. var as=arr.filter((item,index)=>{
return item.age>13
})
console.log(as)
数组里有符合条件的,所以是 true ,所以返回符合条件的新数组
find 方法
1. 对数组逐个查找,当返回值为 true 说明查找到,直接返回结果,不再往下查找了
2. var as=arr.find((item,index)=>{
return item.age>13
})
console.log(as)
every 方法
1. 看数组中的每个元素是否都满足条件,都满足条件返回的是 true,如果有一个不满足,返回值就是 false
2. var arr=[
{"name":"xiaopang","age":10},
{"name":"xiaohe","age":20},
{"name":"xiaoxin","age":25},
{"name":"pangpang","age":13}
]
var as=arr.every((item,index)=>{
return item.age<=13
})
console.log(as)
some 方法
1. 看数组中的元素,是否有满足条件的,有就true ,没有 就是false
2. var arr=[
{"name":"xiaopang","age":10},
{"name":"xiaohe","age":20},
{"name":"xiaoxin","age":25},
{"name":"pangpang","age":13}
]
var as=arr.some((item,index)=>{
return item.age<=13
})
console.log(as)
reduce 方法
1. 迭代执行
2. var arr=[1,2,3,4,5,6,7,8,9,10];
var as=arr.reduce((prev,item)=>{
// prev 航一次返回值
// item 数组的元素,从第二个开始
console.log(prev);
return prev+item;
})
console.log(as) //55
3. 注意: 1.从第二个元素开始执行,因为第一个元素没有上一个
2.第一次执行的返回的是第一个元素 reduce() 的参数是一个回调函数,回调函数中可以放三个参数,第一个 prev 代表上一次执行后的返回值,第二个 item 当前元素,第三个 index 索引值
3. 如果想让 reduce 从第一个元素开始执行 (默认为第二个),可以在回调函数之后加一个参数,就可以让初始有个默认值
面试题
将一个数组转换成对象,属性是数组的元素,属性值是元素的个数
解答;
var arr=["item","tom",,"jack","item","jack"];
var as=arr.reduce((prev,item)=>{
if(item in prev){
prev[item]++
}
else{
prev[item]=1;
}
return prev
},{})
console.log(as);