forEach循环遍历请求接口

JavaScript017

forEach循环遍历请求接口,第1张

最近项目的需求,需要遍历table表格里的数据,进行生产的操作,效果:接口返回的格式潇洒的实现效果 但是有一点需要注意:如果用for循环,就会出现,接口全都请求成功以后,也不能成功赋值的错误! 例如for循环的写法如下:for循环写法: postAutoProduceDevice() {         var _this = this         if (_this.zdExList.length < 1) {           return _this.$message.warning("请先导入要生产的设备")         }         var snArr = []         var snArrTotal = 0         var arrList = _this.zdExList         for (let index = 0 index < arrList.length index++) {           const element = arrList[index]           _this.hqUserInfo({             data: {               name: "postAutoProduceDevice",               data: JSON.stringify({                 batch: _this.produceDevSearch.batch,                 devicetype: _this.zd.devtype,                 sn: element.sn,                 field: "",                 snnum: "1",                 operid: _this.userid               })             }           }).then(res => {             if (res.ret) {               _this.zdExList[index] = {                 "sn": res.Data[0].sn,                 "deviceType": res.Data[0].devicetype,                 "logicId": res.Data[0].logicid,                 "mac": res.Data[0].mac,                 "ip": res.Data[0].ip,                 "retmsg": "生产成功"               }             } else {               _this.zdExList[index].retmsg = res.Msg             }           })         }       },forEach写法: postAutoProduceDevice() {         var _this = this         if (_this.zdExList.length < 1) {           return _this.$message.warning("请先导入要生产的设备")         }         var zdParams = {           batch: _this.produceDevSearch.batch,           devicetype: _this.zd.devtype,           sn: "",           field: "",           snnum: "1",           operid: _this.userid         }         _this.zdExList.forEach((item,index) => {           zdParams.sn = item.sn           _this.hqUserInfo({             data: {               name: "postAutoProduceDevice",               data: JSON.stringify(zdParams)             }           }).then(res => {             if (res.ret) {               item.sn = res.Data[0].sn               item.devicetype = res.Data[0].devicetype               item.logicId = res.Data[0].logicid               item.mac = res.Data[0].mac               item.ip = res.Data[0].ip               item.retmsg = "生产成功"               _this.$set(_this.zdExList, index, _this.zdExList[index])             } else {               item.retmsg = res.Msg               _this.$set(_this.zdExList, index, _this.zdExList[index])             }           })         })       },

首先定义一个数组

const arr = [1,2,3,4,5,6]

第一种:for循环

for (let i = 0i<arr.lengthi++){

   console.log(arr[i])

}

for(j=0,len=arr.lengthj<lenj++){}//这种方法基本上是所有循环遍历方法中性能最高的一种

第二种 for of (需要ES6支持) 性能要好于forin,但仍然比不上普通for循环

for (let value of arr){

       console.log(value)

}

第三种 for in 它的效率是最低的

for (let i in arr){

      console.log(arr[i])

 }

第四种 foreach() 实际上性能比普通for循环弱

    1、箭头函数写法

    arr.forEach(value =>{

        console.log(value)

    })

    2、普通函数写法

    arr.forEach(function(value){

       console.log(value)

     })

第五种 entries()

for (let [index, value] of arr.entries()) {

     console.log(value)

 }

第六种 keys()

for (let inx of arr.keys()){

console.log(arr[inx])

}

第七种 reduce()

1、箭头函数

arr.reduce((pre,cur)=>{

       console.log(cur)

 })

2、普通函数

arr.reduce(function(pre,cur){

     console.log(cur)

})

第八种 map() 但实际效率还比不上foreach

1、箭头函数

 arr.map(value=>{

       console.log(value)

 })

2、普通函数

arr.map(function(value){

      console.log(value)

})

第九种 values()

for (let value of arr.values()){

       console.log(value)

 }

js循环遍历变量的方式有以下几种: 1.for(let i = 0i <5i++) 2.forEach 3.for of 4.for in 那么我们来看下这几种遍历方式的用法,以及退出循环的方法 1.for 这是最常用的遍历方法,for用来遍历数组,可以使用break 退出循环,使用continue来跳过本次循环。 2.forEach 除了抛出异常以外,没有办法中止或跳出 forEach() 循环。 并且forEach不会改变原来的数组 3.for of for of 可以迭代 可迭代对象 (包括 Array , Map , Set , String , TypedArray , arguments 对象等等) 对于for of,可以由break, throw 或return终止, 可以用continue略过此次循环。在这些情况下,迭代器关闭。