学习数组的迭代方法
- forEach() 迭代数组每一项,没有返回值
- map() 迭代数组每一项,可以给特定条件会返回重新组成新的数组
- every() 迭代数组每一项,每项都符合条件的才返回true,反之false
- some() 迭代数组每一项,只要有一项符合条件就返回true,如果全部不符合才返回false
- filter() 迭代数组每一项,可以给特定的条件进行筛选返回新的数组
- reduce() 接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值
forEach()
作用:
对数组中的每一个元素进行一次函数处理,返回一个新的数组,不会改变原数组。
用于调用数组的每个元素,并将元素传递给回调函数。
注意: forEach() 对于空数组是不会执行回调函数的。
注意:forEach()方法没有返回值,不会改变数组,只是对数组每个元素进行一个函数处理.
var arr=[0,1,2,3,4]
arr.forEach((item,index)=>{//item是数组的每一项 index表式索引
console.log(item,index);
})
对象
var obj=[
{id:1,name:apple,price:10},
{id:2,name:banner,price:20},
{id:3,name:orgine,price:30},
{id:4,name:西瓜,price:40},
]
obj.forEach((item,index)=>{//item是数组的每一项 index表式索引
console.log(item.name);//获取项目的名字
})
map()
map 对原数组数据进行处理之后,返回新数组
// var arr = [10, 20, 100, 99, 88, 55, 40, 30]
// var newArr=arr.map(function (item) {
// // return item + 5
// if(item<60){
// return item+5
// }
// return item
// })
// console.log(newArr);
var datas = [
{ name: "张三", age: 20 },
{ name: "李四", age: 33 },
{ name: "王二", age: 18 },
{ name: "麻子", age: 50 }
]
// var data=datas.map(function(item){
// item.age=item.age-2
// return item
// })
var data = datas.map(function (item) {
item.sex = 0 //新增属性
return item
})
console.log(data);
-
some 返回值为布尔类型
-
every 返回值为布尔类型
-
//some every //some 若数组中的有一个元素满足条件,则返回true,若都不满足,则返回false //every 若数组中每一个元素都满足条件,则返回true,有一个不满足,则返回false var scores = [80, 100, 90, 77] //问:筛选出大于60的数? // var count=0 // for(var i=0;i<scores.length;i++){ // if(scores[i]>=60){ // count++ // } // } // var rst=scores.every(function(item){ // return item>=60 //真 // }) var rst = scores.every(item => item >= 60) //??? console.log(rst); //[真,真,真,假,真,,,] //问:是否有不及格的? // var rst=scores.some(function (value, index) { // // console.log(value, index); // return value < 60 // }) // console.log(rst);
filter()
-
过滤 筛选满足条件的数据,组成新数组 返回一个新数组
// var arr = [10, 20, 100, 99, 88, 55, 40, 30]
// //筛选出大于60的数据
// var arr0=arr.filter(function (item, index) {
// // console.log(item,index);
// return item >= 60
// })
// console.log(arr0);
var datas = [
{ name: "狗蛋", age: 20 },
{ name: "吕布", age: 33 },
{ name: "蔡文姬", age: 18 },
{ name: "钢炮", age: 50 }
]
var ps=datas.filter(function (item) {
return item.age > 30
})
reduce()
注意: reduce() 对于空数组是不会执行回调函数的。
// var arr = [10, 20, 20, 30, 10, 100]
// // var sum = arr.reduce(function (a, b) { //a第一次是数组中第一个数组,b是第二个数据
// // console.log(a, b); //第二次之后,a的值,是前面数据累加的和
// // return a + b
// // })
// var sum = arr.reduce(function (a, b) { //a第一次是数组中第一个数组,b是第二个数据
// console.log(a, b); //第二次之后,a的值,是前面数据累乘的和
// return a * b
// })
// console.log(sum);
// for (var i = 0; i < arr.length; i++) {
// sum += arr[i]
// }
var arr = [[10, 20, 30], ['hello'], [50, 100], [40], [70, 11, 22]]
//将数组改造为一维数组
var arrx = arr.reduce(function (a, b) {
return a.concat(b)
})