数组方法
forEach
forEach会遍历数组, 循环体内没有返回值, forEach`循环不会改变原来数组的内容, forEach有三个参数, 第一个参数是当前元素, 第二个参数是当前元素的索引, 第三个参数是当前元素所属的数组.
let arry = [1, 2, 3, 4];
arry.forEach((item, index, arr) => {
console.log(item); // 1 2 3 4
});
注意:forEach不能跳出循环,如写了判断条件 只能跳出当此循环
forEach没有返回值
filter
filter参数和forEach也是一样的,filter主要是过滤的, 用来过滤数组中不满足条件的元素, 把满足条件的元素返回到新的数组里, 并且不会改变原数组.
let arry = [1, 2, 3, 4, 5];
let temp = arry.filter((item, index, arr) => {
return item < 3; // 返回 1 2
});
map
map的主要作用是数据需要处理的时候会用到map比较多一些 map的参数和forEach是一样的
let arry = [1, 2, 3, 4 ,5];
let temp = arry.map((item, index, arr) => {
return item + 1; // 返回 [2,3,4,5,6]
});
every
遍历数组, 在循环体内写条件, 如果每一项都是true, 就会返回true, 只要有一个是false, 就会返回false
let arry = [1, 2, 3, 4, 5];
arry.every((item, index, arr) => {
return item > 2;
});
// 使用变量接收 打印出的是布尔值 true或false
sort
对数组进行排序
1、基本数据类型
let arr = [5,8,4,1,565]
arr.sort()
//基本数据类型就可以直接使用sort方法进行排序
2、引用数据类型
想要将对象数组进行排序的时候就要我们自己创建数组的时候在对象中添加一个我们想要的顺序的属性,使用属性来把对象数组进行排序
// 使用axios方法 获取城市列表数据
getCityData().then(res => {
let list = res.data.cityList
console.log(this.cityList);
var obj = {}
var hotCity = []
var resultArr = []
//对数组进行处理
list.forEach(item=>{
var p =item.pinyin[0].toUpperCase()
if(obj[p]){
obj[p].push(item.name)
}else{
obj[p] = [item.name]
}
if(item.isHot === 1){
hotCity.push(item)
}
})
for(let key in obj){
resultArr.push({value:obj[key],key:key})
}
// 得到的数组是这样的 [{value:["北京",北平,...], key:B}]
// one 是类比第一个 two是类比第二个 循环
resultArr.sort((one,two)=>{
one = one.key
two = two.key
if(one<two){
return -1 //返回-1的排序是 one ,two
}else if(one>two){
return 1 //返回-1的排序是 two ,one
}else{
return 0
}
})
this.hotCityList = hotCity
this.allCityList = resultArr
console.log(this.allCityList)
})