//eval 可以把字符串转为表达式
eval(ary.join('+'))
回调函数
forEach map some every filter reduce
var ary = [100,200,300,400];
let fn = (item,index)=>{// 回调函数
// item 和 index 都是形参
// item 是数组中的每一项
// index 是每一项对应的索引
console.log(item,index)
item = 1000;
}
ary.forEach(fn);// fn 是 forEach的回调函数
var ary = [{a:100},{a:200},{a:300},{a:400},{a:500}];
let fn = (item,index)=>{
item.a = 1000; //item是一个引用类型值
return index;
}
var t1 = ary.forEach(fn);
var t2 = ary.map(fn)
console.log(t1,t2)
---map()
var arr = [100,200,300,400];
var newArr = arr.map((item)=>{
return 1000+item
});
forEach和map的区别
forEach 没有返回值;forEach不能改变原有数组,如果是引用数据类型,可以改变
map有返回值,返回值是一个新数组,新数组是由每一个回调函数执行时候的返回值决定的
some()
只要有一个回调函数的返回值是true 则some的运行结果就是true;
一旦有一个回调函数的结果是true 则 后边的回调就不再执行了;
let bol = arr.some((item,index)=>{
return item>600
})
every()
只要有一个回调函数的返回值是false则every的运行结果就是false
一旦有一个回调函数的结果是false则后边的回调就不再执行了;
let bol = arr.every((item,index)=>{
return item>600
})
filter()
把回调函数return值是true的项复制一份放到新数组中;
let ary = [100,200,300,400];
let res3 = ary.filter(item=>{
return item > 2
})
res3 => [100, 200, 300, 400]
reduce()
// 练习 使用reduce 实现数组求和;
let ary3 = [10,20,30,40];
let res6 = ary3.reduce((prev,next)=>{
// debugger
return prev + next
},1000)
prev在第一个回调函数执行的时候 是数组中的第一项,在这之后的回调函数执行时,prev是上一个回调函数的返回值
next在第一个回调函数执行的时候 是数组中的第二项,在这之后都是数组的下一项