1.for循环是最便历数据容器最好的方法:1.兼容性好 2.逻辑简单(好交接)
for(let i=0;i<arr.length;i++){
console.log(arr[i])
}
2、ofEach是for循环后来出的方法 但是它不返回新数组 直接操作原数组(一般不推荐使用)
var arr=[100,200,300]
arr.forEach((el,index,arr1)=>{
arr1[index]=el*2
arr1.shift()
//在forEach回调中尽量不要操作原数组,因为每次回调函数执行都会再次使用最新的原数组的数据
console.log(el,index,arr,arr1==arr)
return 100
})
3、map 推荐使用
var arr=[100,200,300]
var re=arr.map((el,index,arr)=>{
console.log(el,index,arr)
return el*2
})
4、我推荐不使用
var arr = [100, 200, 300]
for (el of arr) {
console.log(el)
}
for of 循环是 Es6 中新增的语句, 用来替代for in 和 forEach, 它允许你遍历 Arrays( 数组), Strings( 字符串), Maps( 映射), Sets( 集合)
5、
<script>
var arr = [{
name: "karen",
age: 16,
rank: 484
}, {
name: "jack",
age: 19,
rank: 600
}, {
name: "marry",
age: 18,
rank: 550
}]
var arr2=arr.filter((el)=>{
console.log(el)
if(el.age>=18){return true}
else{return false}
}).filter((el)=>{
if(el.rank>500){
return true
}else{
return false
}
})
var arr2=arr.filter((el)=>{
//el引用了arr中元素 但是是一种浅拷贝
console.log(el)
el.name="xxx"
if(el.age>=18){return true}
else{return false}
})
arr2[0].rank=400
console.log(arr2,arr)
这个方法返回的是符合条件的数组
6、
<script>
var arr = [{
name: "karen",
age: 16,
rank: 484
}, {
name: "jack",
age: 19,
rank: 600
}, {
name: "marry",
age: 18,
rank: 550
}]
var re=arr.some((el)=>{
console.log(el)
if(el.rank>599){return true}
})
console.log(re)
这个方法返回的是符合条件的对象
8、
arr.every((el)=>{
if(el.age>18){return true}
else{return false}
})
这个方法是要全部的符合条件
9、
arr.reduce((累加的值,下一个元素)=>{ },初始值)
10、从右边开始累加
<script>
var arr = [{
name: "karen",
age: 16,
rank: 484
}, {
name: "jack",
age: 19,
rank: 600
}, {
name: "marry",
age: 18,
rank: 550
}]
var re=arr.reduceRight((pre,next)=>{
console.log(pre,next)
return {age:pre.age+next.age}
})
console.log(re)