every:
对数组的每个项做一个判断,如果每个数据执行函数后返回结果都为true, 返回结果就是true, 如果有一个是false, 返回结果就是false
语法:数组.every(函数);
用函数的返回值来做判断
有3个形参(项, 下标, 原数组)
实例:
{
let arr = [
{
name: "妲己",
num: 10,
sex: "女"
},
{
name: "王昭君",
num: 20,
sex: "女"
},
{
name: "貂蝉",
num: 30,
sex: "女"
},
];
//every:每一个都满足条件,就返回true,只要有一个假的,就返回false
//every 回调函数返回的是判读条件
let aa = arr.every(function (item, index, arr) {
return item.num > 10
})
console.log(aa);
}
some:
some: 对数组的每个项做一个判断,如果每个数据执行函数后返回结果都为false, 返回结果就是false, 如果有一个是true, 返回结果就是true
语法:数组.some(函数);
用函数的返回值来做判断
有3个形参(项, 下标, 原数组)
案例:
{
let arr = [
{
name: "妲己",
num: 10,
sex: "女"
},
{
name: "王昭君",
num: 20,
sex: "女"
},
{
name: "貂蝉",
num: 30,
sex: "女"
},
];
//some:有一个是真的,整体就是真的,所有都是假的,最后才是假的
//some中的回调函数返回的是你的判断条件
let aa = arr.some(function (item, index, arr) {
return item.sex === "男"
})
console.log(aa);
}
filter:
挑选 每个数据执行函数后 返回结果为 true的 数据, 组成新的数组 返回 返回一个新数组
语法: 数组.filter(函数);
用函数的返回值来做判断
有3个形参(项, 下标, 原数组)
find:
find:返回满足条件的那条数据,如果没有满足条件的数据,返回undefined
find:回调函数返回判断条件
语法: 数组.find(函数);
有3个形参(项, 下标, 原数组)
实例:
{
let arr = [
{
name: "妲己",
num: 10,
sex: "女"
},
{
name: "王昭君",
num: 20,
sex: "女"
},
{
name: "貂蝉",
num: 30,
sex: "女"
},
];
//find:返回满足条件的那条数据,如果没有满足条件的数据,返回undefined
//find:回调函数返回判断条件
let obj = arr.find(function (item, index, arr) {
return item.name === "王昭君"
})
console.log(obj);//{name: '王昭君', num: 20, sex: '女'}
}
findIndex:
findIndex:返回满足条件的那条数据的下标,找到返回,没找到返回-1
findIndex:回调函数返回符合判断判断条件的那条数据的下标
语法: 数组.findIndex(函数);
有3个形参(项, 下标, 原数组)
实例:
{
let arr = [
{
name: "妲己",
num: 10,
sex: "女"
},
{
name: "王昭君",
num: 20,
sex: "女"
},
{
name: "貂蝉",
num: 30,
sex: "女"
},
];
//findIndex:返回满足条件的数据的下标,没找到返回-1
//findIndex:回调函数返回的是判断条件
let aa = arr.findIndex(function (item, index, arr) {
return item.name === "王昭君"
})
console.log(aa);
// 如果数组的元素是简单类型(数字、字符串),那么indexOf findIndex 都可以查
// 如果数组的元素是对象,那么就只能使用findIndex
let nums = [1, 2, 3, 4, 5, 6];
console.log(nums.indexOf(3));
console.log(nums.findIndex(item => item == 3));
console.log(arr.findIndex(item => item.name === '貂蝉'));
}
raduce:累加、累乘
语法:数组.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数 | 描述 |
function(total,currentValue, index,arr) | 必需。用于执行每个数组元素的函数。 函数参数: |
initialValue | 可选。传递给函数的初始值 |
参数 | 描述 |
total | 必需。初始值, 或者计算结束后的返回值。 |
currentValue | 必需。当前元素 |
currentIndex | 可选。当前元素的索引 |
arr | 可选。当前元素所属的数组对象。 |
实例:
{
//reduce:累加
let arr = [1, 2, 3, 4, 5]
let sum = arr.reduce(function (val, item, index, arr) {
return val + item
}, 0)
console.log(sum);
let goods = [
{
name: "手机",
num: 10,
price: 500,
ischecked: true
},
{
name: "电脑",
num: 20,
price: 600,
ischecked: false
},
{
name: "ipad",
num: 30,
price: 700,
ischecked: true
},
]
/*
let num=goods.reduce(function(val,item){
if(item.ischecked){
return val+item.num
}else{
return val
}
},0)
console.log(num);*/
let num = goods.reduce((val, item) => item.ischecked ? val + item.num : val, 0)
let price = goods.reduce((val, item) => item.ischecked ? val + item.price * item.num : val, 0)
/*
let sum=0;
arr.forEach(item=>{
sum+=item
})
console.log(sum);*/
}