
最近项目的需求,需要遍历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略过此次循环。在这些情况下,迭代器关闭。