let arr = ['张三','李四','王五','赵六']
for(let i =0; i< arr.length; i++) {
console.log(arr[i])
}
//foreach循环 回调函数里面的三个参数 值 索引 数组
arr.forEach(function(value,index,arr) { //这是一个回调函数 回调函数就是调用一次就会执行一次
console.log(value,index,arr)
})
arr.forEach((value,index,arr)=>{
console.log(value,index,arr)
})
// arr.map() arr.filter() arr.some() arr.every() arr.forEach()
//其实上面的循环 可以接受两个参数
//****格式=是这样子的 arr.forEach/map...(循环的回调函数,this指向谁)
arr.forEach(function(value,index,arr) { //这是一个回调函数 回调函数就是调用一次就会执行一次
console.log(this,value,index,arr)
},45)
//arr.map() 在做和后台的数据交互的时候是非常好用的
let array = [
{title: "天气", content: "今日多云转晴",iftrue: true}, //json数据
{title: "天气1", content: "今日多云转晴2",iftrue: false},
{title: "天气2", content: "今日多云转晴3",iftrue: true},
]
array.map((value,index,array)=>{
console.log(value,index,array)
})
//一个函数如果没有返回值的话 默认都是undefined
//需要配合return 返回的是一个新的数组 没有return 相当于forEach
let str = array.map((value,index,array)=> {
return 111; //没有返回值的话 就是undefined
})
console.log(str)
//arr.map()可以用来整理数据 非常好用
let newArray =array.map((item,index,array)=> {
let data={}
data.a = `您好${item.title},今天就天气是${item.content}`
data.b = `${item.title}+不错`
return data
})
console.log(newArray)
//arr.filter() 用来过来数据 如果为true就保留下来 如果为false则不保存 反之亦然
let newArray1 = array.filter((item,index,array)=>{
return item.iftrue == false
})
console.log(newArray1)
//arr.some()类似于查找,数组里面某一个元素复合的话 但会true
//arr.every() 数组里面的元素都要复合条件 才会返回true
let newaRRAY = array.some((item,index,array)=>{
return item.iftrue == true;
})
console.log(newaRRAY)
let newArray2 = array.every((item,index,array)=>{
return item.iftrue ==true
})
console.log(newArray2)
//使用函数 进行模拟 arr.some()
let frult = ["apple","orange"]
function fn(arr,array) {
return frult.some((item,index,frult)=>{
return item ==array
})
}
console.log(fn(arr,"apple"))
//判断一个数组 是否为奇数 arr.every()
let n = [1,3,5,7,9]
let m = n.every((item,index,n)=>{
return item%2 !== 0
})
console.log(m)
//******参数不一样了
//arr.reduce() 求数组的和 从左往右
let arra = [1,2,3,4,5,6,7,8,9,10]
let a =arra.reduce((prev,cur,index,arra)=>{ //前一个 当前这个 当前这个索引 当前循环的数组
return prev+cur; //上一个存储完的结构 加现在的这个数
})
console.log(a)
//arr.reduceRight() 从右往左
let b = arra.reduceRight((prev,cur,index,arra)=>{
return prev+cur;
})
console.log(b)
//幂运算符ES6新增 Math.pow(2,3)
console.log(2**3)
//ES6新增 for....of.... 遍历数组
for(let val of arra){
console.log(val)
}
for(let index of arra.keys()){ //索引方法
console.log(index)
}
for(let item of arra.entries()){ //key value
console.log(item)
}
for(let [key,value] of arra.entries()){ //具体的索引和方法
console.log(key,value)
}
//总结 arr.keys() 数组的下标
//arr.entries() 数组的某一项