eg:判断数组中的 元素都大于 0 吗?
var arr = [50,1,2,3,3,4,5,10,20]
var flag = arr.every(function (e) {
return e > 0;
})
console.log(flag); //true
//或者打印e看看
arr.every(function(e){
console.log(e, e>0 ); //50 true、1 true、2 true、3 true....
return e>0
})
//若果在数组中添加一项<0的元素(-1)
var arr = [50,1,2,3,-1,3,4,5,10,20]
var flag = arr.every(function (e) {
return e > 0;
})
console.log(flag); //false
arr.every(function(e){
console.log(e, e>0 ); //50 true、1 true、2 true、3 true、-1 false(后面的不执行)
return e>0
})
总结:every()是对数组中每一项运行给定函数,如果该函数所有一项返回true,则返回true。一旦有一项不满足则返回flase
eg:取数组中 大于等于 5的元素 放到一个新数组中
var arr = [50,1,2,3,-1,3,4,5,10,20]
var flag = arr.filter(item=>{
if (item >= 5) {
return item;
}
});
console.log(flag); //[50, 5, 10, 20]
总结:filter会返回一个新的数组,它用于把Array的某些元素过滤掉,然后返回剩下的元素,不影响原数组。
eg:将数组中的每个元素都扩大2倍
var arr = [50,1,2,3,-1,3,4,5,10,20]
var flag = arr.map(item=>{
return item * 2
})
console.log(flag); //[100, 2, 4, 6, -2, 6, 8, 10, 20, 40]
总结:map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
eg2:取数组中 大于等于 5的元素(此处为fliter和map方法的区别)
var arr = [50,1,2,3,-1,3,4,5,10,20]
//filter
var flag = arr.filter(item=>{
return item > 5;
});
console.log(flag); //[50, 10, 20]
//map(第一种)
var flag = arr.map(item=>{
return item > 5
})
console.log(flag); //[true, false, false, false, false, false, false, false, true, true]
//map(第二种)
var flag = arr.map(item=>{
if (item > 5) {
return item;
}
})
console.log(flag); //[50, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 10, 20]
总结 (filter和map的区别):filter方法,过滤数组中满足条件的元素,将满足条件的数组放在一个新的数组中,返回这个新的数组。
map方法,批量处理数组中的元素,并将处理后的元素放在新的数组中,返回这个新的数组
eg:判断数组中有大于10的元素吗
var arr = [50,1,2,3,-1,3,4,5,10,20]
var flag = arr.some(item=>{
return item > 10
})
console.log(flag); //true(若数组中没有大于10的数字则返回false)
总结:some()是对数组中每一项运行给定函数,如果该函数满足任一项返回true,否则返回false
eg:判断数组中是否有4这个数字
var arr = [50,1,2,3,-1,3,4,5,10,20]
var flag = arr.includes(4)
console.log(flag); //true
总结:includes方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false