forEach在项目中的使用

  forEach 会改变原始数组  被forEach循环的数组不能够为空
  forEach会改变原始数组     value是内容   index是索引   array是你写的数组。
  foeEach内部是异步的哈
            
  功能描述: eachArr给数组的每一项 添加一个新的key值
  为什么在项目中会使用foeach.因为forEach会改变原始数组。
  我们在一些时候,就需要去使用原始数组。
  比如:后端在给我们的每一项中只有3个字段。我们需要再添加一个字段去控制其他的。此时我们就可以去使用foreach。
 eachArr: [
      { name: "lj",age: 20 },{ name: "lh",age: 23 },{ name: "yj",age: 21 },]


   giveEach() {
            if (this.eachArr) {
                this.eachArr.forEach((v,i,arr) => {
                    //添加一个新的key
                    this.eachArr[i]['url'] = "http";
                })
                console.log('123',this.eachArr)
            }
        },

forEach没有返回值

let arr=[
    {name:'张三',age:13},{name:'张三',age:13}
]

let newRrr=arr.forEach((item,index,arr)=>{
    console.log( "每一项",item)
    console.log( "索引",index)
    console.log( "被循环的数组",arr)
    return index
})
//因为forEach是没有返回值的,所以该值是 undefined
console.log("newRrr",newRrr );

不要在forEach中去执行异步任务

function delay(item){
    return new  Promise((resolve)=>{
        setTimeout(()=>{
            resolve(item)
        },2000)
    })
}
function fn(arr){
    arr.forEach(async element => {
        console.log( await delay(element) );
    });
    console.log('打印完毕' )
}
fn([1,2,3,4])


我们本来希望的是:
每个2s后,依次打印出1,4 然后最打印出【打印完毕】
但是实际却是:
先打印出==》打印完毕==》1,4一起被打印出来==》并没有每隔2s

怎么解决了,使用for of就ok了
function delay(item){
    return new  Promise((resolve)=>{
        setTimeout(()=>{
            resolve(item)
        },2000)
    })
}

async function fn(arr){
    for (const iterator of arr) {
        console.log( await delay(iterator) );
    }
    console.log('打印完毕' )
}

forEach 中不支持 break 和 continue

null,undefined使用foeEach会报错,[]空数组不会.{注意}

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...