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会报错,[]空数组不会.{注意}