forEach 数组/nodelist【无返回值】
遍历数组中的每一项 数组中有多少项,函数会相继被执行多少次)都可以在函数中获取到当前遍历的这一项和对应的索引
作用:遍历数组中的每一项
- 参数:函数
- 返回值:undefined 返回值
- 是否修改原数组:否 ``` var ary3=[1,2,3]; ary3.forEach(function(item,index){ // item 每一项的具体值 // index 每一项的索引 console.log(“item:”+item+”—index:”+index); })
“_”就是形参占位,原本应该有个形参变量,但是我不想用,所以我占个位即可
```javascript
forEach(function (_, index) {
});
map【遍历 有返回值】
forEach是不支持返回值的而map可以在forEach基础上支持返回值 把原来数组中每一项的值替换成新值 最后存储在一个新的数组中,但是原始数组不变
- 作用:把一个数组可以映射成一个新的数组
- 参数:函数
- 返回值:映射后的新数组
- 是否修改原数组:否
var ary3=[1,2,3];
var res=ary3.map((item,index)=>{
return item+"index";
})
console.log(res)
//[ '1index', '2index', '3index' ]
find【查找符合条件的元素】
依次迭代数组中的每一项,查找出符合条件这一项
如果找到则返回找到的这一项,然后不进行循环 {这一项是对象就返回对象,是值就返回值} 如果循环了一圈还没找到 返回 的
undefined
。
let array1 = [5, 12, 8, 130, 44];
let found = array1.find(item => {
return item > 10;
});
console.log(found);//返回的就是12
let array12 = [{ name: '张三' }, { name: '李四' }, { name: '王五' }];
let res=array12.find(item=>{
return item.name==='李四';
});
console.log(res);//返回的是李四的这个所在的对象
**findIndex**
【查找符合条件第一个元素的索引】
**findIndex()**
方法返回数组中满足条件的第一个元素的索引。若没有找到对应元素则返回-1。
let array1 = [5, 12, 8, 130, 44];
let foundIndex = array1.findIndex(item => {
return item > 10;
});
console.log(foundIndex);//1 因为12 索引在1
filter方法用于过滤数组成员,满足条件的成员组成一个新数组返回。
它的参数是一个函数,所有数组成员依次执行该函数,返回结果为true的成员组成一个新数组返回。该方法不会改变原数组。
var arr = [0,4,2,3,5]
var res = arr.filter((item)=>{
return (item>3)
});
console.log(res);//[4,5]
some【统计数组是否满足某个条件返回一个布尔值,表示判断数组成员是否符合某种条件】
some
方法是只要一个成员的返回值是true
,则整个some
方法的返回值就是true
,否则返回false
。 参数 item表示当前成员
let array1 = [5, 12, 8, 130, 44];
function checkAvailability(arr, val) {
return arr.some((item,index) => val === item);
}
console.log(checkAvailability(array1,5));//true
console.log(checkAvailability(array1,999));//false
every跟Some一样【统计数组是否满足某个条件返回一个布尔值,表示判断数组所有成员是否符合某种条件】
every方法 所有成员的返回值都是true,整个every方法才返回true,否则返回false 只要有一个false就是false
let array1 = [5, 12, 8, 10, 12];
function check(arr, val) {
return arr.every((item,index) => item>val);
}
console.log(check(array1,9));//false
console.log(check(array1,4));//true
reduce 从左到右
方法对数组中的每个元素执行一个由您提供的reducer函数 (升序执行),将其结果汇总为单个返回值。
空数组不可使用 reduce
语法:arr.reduce(function(result,item,index){return result + item},initialValue[初始值])
参数: result=累计器累计回调的返回值; 它是上一次调用回调时返回的累积值
item:数组中正在处理的元素。
index:数组中正在处理的当前元素的索引 如果提供了initialValue,则起始索引号为0,否则从索引1起始。
initialValue[可选]:作为第一次调用 回调函数时的第一个参数的值。
如果没有提供初始值,则将使用数组中的第一个元素
没有提供initialValue参数
let arr = [10, 20, 30, 40];
// + 迭代数组中的每一项,每迭代一项,触发回调函数执行一次
let total = arr.reduce(function (result, item, index) {
// 第一次:result是数组第一项 item是数组第二项「数组是从第二项开始迭代」
// 第二次:result是上一次回调函数返回的结果 item依次迭代数组的每一项
// reduce可以获取到上一次处理的结果,这样就可以实现结果的累计处理
// console.log(result, item, index);
return result + item;
// @1 result=10 item=20 return->30
// @2 result=30 item=30 return->60
// @3 result=60 item=40 return->100
});
console.log(total);
提供了initialValue初始值
let arr = [10, 20, 30, 40];
let total = arr.reduce(function (result, item, index) {
return result + item;
}, 0);
//如果reduce传递了第二个值,则是给result设置的初始值,此时数组就要从第一项开始迭代了
// @1 result=0 item=10 return->10
// @2 result=10 item=20 return->30
// ...
console.log(total);
reduceRight 从右往左
Array.from()
**Array.from()**
方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。
类数组转数组