1、forEach()
1)定义:forEach会遍历数组, 没有返回值, 不允许在循环体内写return, 不会改变原来数组。
2)参数:value -- 当前索引的值
index -- 索引
array -- 原数组
let arr = [1,2,3]
arr.forEach((value,index,array)=>{
console.log(value,index,array)
})
2、map()
1)定义:遍历(映射)数组,会返回一个新数组,不会改变原数组
2)参数:value -- 当前索引的值
index -- 索引
array -- 原数组
var arr = [1,2,3,4]
var arr1 = arr.map((value,index,array)=>{
value = value * 3
return value
})
console.log(arr1); // [3,6,9,12]
ps: arr.forEach()和arr.map()的区别
1. arr.forEach()是和for循环一样,是代替for。arr.map()是修改数组其中的数据,并返回新的数据。
2. arr.forEach() 没有return arr.map() 有return
3、every()
1)定义:every遍历数组, 每一项都是true, 则返回true, 只要有一个是false, 就返回false。
2)参数:value -- 当前索引的值
index -- 索
let arr = [1,2,3,4,5]
let arr1 = arr.every( (value, index) =>value<3)
console.log(arr1) // false
let arr2 = arr.every( (value, index) =>value<6)
console.log(arr2) // true
4、some()
1)定义:依据判断条件,数组的元素是否有一个满足,若有一个满足则返回ture,否则返回false
2)参数:value -- 当前索引的值
index -- 索引
let arr = [1,2,3,4,5]
let arr1 = arr.filter( (value, index) => value<3)
console.log(arr1) // [1, 2]
6、find()
1)定义:找到第一个符合条件的数组成员
2)参数:value -- 当前索引的值
index -- 索引
array -- 原数组
let arr = [1,2,3,4,5,2,4]
let arr1 = arr.find((value, index, array) =>value > 2)
console.log(arr1) // 3
7、findIndex()
1)定义:找到第一个符合条件的数组成员的索引值
2)参数:value -- 当前索引的值
index -- 索引
array -- 原数组
let arr = [1,2,3,4,5]
let arr1 = arr.findIndex((value, index, array) => value > 3)
console.log(arr1) // 3
数组的练习
let heros = [
// power: 武力 wisdom:智力
{ id: 1, name: '张飞', power: 97, wisdom: 10 },
{ id: 2, name: '诸葛亮', power: 55, wisdom: 99 },
{ id: 3, name: '赵云', power: 97, wisdom: 66 },
{ id: 4, name: '周瑜', power: 80, wisdom: 98 },
{ id: 5, name: '吕布', power: 100, wisdom: 8 },
{ id: 6, name: '司马懿', power: 30, wisdom: 98 }
]
要求:使用上述方法完成
// 功能1. 求数组中所有英雄的武力平均值
let mean = 0;
heros.forEach((value, index) => (mean += heros[index].power));
console.log(mean / heros.length);
// 功能2. 得到一个新数组,只保留英雄的名字
let newname = [];
heros.forEach((value, index) => newname.push(heros[index].name));
console.log(newname);
// 功能3. 得到一个新数组,新数组中只保留武力值超过90的英雄
let newname1 = [];
heros.findIndex((value, index) => {
if (heros[index].power > 90) {
newname1.push(heros[index]);
}
});
console.log(newname1);
// 功能4. 删除数组中名字为周瑜的英雄
let arr1 = [];
heros.find((value, index) => {
if (heros[index].name != "周瑜") {
arr1.push(heros[index]);
}
});
console.log(arr1);
// 功能5. 删除数组中名字叫所有智力低于60的英雄
let arr2 = [];
heros.find((value, index) => {
if (heros[index].wisdom > 60) {
arr2.push(heros[index].name);
}
});
console.log(arr2);
// 功能6. 判断数组中所有英雄的武力是否都超过60, 如果是,打印全是猛将否则打印还有弱鸡
heros.every((value, index) => {
if (heros[index].power > 60) {
console.log("还有弱鸡");
} else {
console.log("全是猛将");
}
});