forEach 数组/nodelist【无返回值】

遍历数组中的每一项 数组中有多少项,函数会相继被执行多少次)都可以在函数中获取到当前遍历的这一项和对应的索引

作用:遍历数组中的每一项

  • 参数:函数
  • 返回值:undefined 返回值
  • 是否修改原数组:否 ``` var ary3=[1,2,3]; ary3.forEach(function(item,index){ // item 每一项的具体值 // index 每一项的索引 console.log(“item:”+item+”—index:”+index); })
  1. _”就是形参占位,原本应该有个形参变量,但是我不想用,所以我占个位即可
  2. ```javascript
  3. forEach(function (_, index) {
  4. });

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()** 方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。
类数组转数组