3-1 forEach方法

遍历数组中的每一项,没有返回值,对原数组没有影响

  1. var arr = [2,3,4,5]
  2. arr.forEach((item,index)=>{
  3. console.log(item+"--"+index);
  4. })

3-2 of 方法

var arr = [2,3,4,5]
for(var i of arr){
  console.log(i);
}
# of 支持异步循环
function muti(num){
  return new Promise((resolve,reject)=>{
    setTimeout(()=>{
      resolve(num*num)
    },1000)
  })
}

var arr = [2,3,4];
/* 
  forEach 是一个同步的循环
  of 支持异步循环
*/
(async()=>{
  /* arr.forEach(async(item)=>{
                var res = await muti(item)
                console.log(res)
            }) */
  for(let value of arr){
    let res = await muti(value)
    console.log(res)
  }
})()

3-3 map 方法 (需加return)

可以改变数组的每一项,变成一个新数组

var arr = [2,3,4,5]
var res = arr.map((item=>{
  return item*2
}))
console.log(arr);  // [2,3,4,5]
console.log(res);  // [4,6,8,10]
  • 注意点:
    1.数组的每一项是基础(简单)类型,执行map不会改变数组原来的结构
    2.数组的每一项为复杂类型,会改变原来的数据结构
    
    ```javascript var arr =[1,2,3] var res = arr.map(item =>{ return item*3 }) console.log(res); console.log(arr); // 没有改变数组原来的结构

var obj =[ {name:”liu”,age:10}, {name:”zhang”,age:11} ] var result = obj.map(item =>{ return item.age = 0; }) console.log(result); console.log(obj); // 改变了数组原来的结构

<a name="KjDQG"></a>
## 3-4 some 方法 (需加return)

- `只要数组中有一项满足条件,就输出true`
```javascript
var arr = [1,2,3,4,5]

var res = arr.some(item =>{
  return item>3
})
console.log(res); // true

3-5 every 方法 (需加return)

  • 数组中的每一项满足条件,才输出true ```javascript var arr = [1,2,3,4,5]

var str = arr.every(item => item >2) console.log(str); //false

<a name="1uAXH"></a>
## 3-6 findeIndex 方法
```javascript
// 找到符合条件的就返回  返回对应的下标,没找到就返回-1
var arr = [1,2,3,2]
var index = arr.findIndex(item=>{
  return item == 2;
})
console.log(index);  // 1

3-7 find 方法 (需加return)

// 找到一个就返回匹配的元素,没找到就返回 undefined
var arr = [1, 2, 3, 4, 5, 6]
var newArr = arr.find(val => {
    return val > 2
})
console.log(newArr) // 3

3-8 filter 方法 (筛选,过滤)(需加return)

注:此方法也不会改变原始数组,会返回一个筛选成功匹配的元素组成的新数组。

// 查找符合条件的元素,主要用于筛选
var arr =[1,2,3,4,5]
var res = arr.filter(item =>item>2)
console.log(res);