传统的写法应该就是对比 index 和 length
myArray.forEach((value, index, array) => {
index === array.length - 1 && (
// 回调
)
})
有没有什么比较优雅的方法呢? 总觉得这样写有点 low
传统的写法应该就是对比 index 和 length
myArray.forEach((value, index, array) => {
index === array.length - 1 && (
// 回调
)
})
有没有什么比较优雅的方法呢? 总觉得这样写有点 low
额,我不知道你的真实意图是什么,但我理解到的意思是,你遍历结束
后,要执行一个回调: 这个遍历是同步的。
除非你遍历中每个动作是异步的,那可以用Promise
。
不过,遍历是同步的。
myArray.forEach(...);
// 循环完成后的事情写在这里
如果要判断循环是否中断,可用 every 代替 forEach, 中断的情况返回 false
if (myArray.every(...)) {
// 循环完成后的事情
} else {
// 循环中断的情况
}
在结尾链式操作一个end
优雅不?
Array.prototype.forEach = function(fn){
var _this = this;
for (var k = 0, length = this.length; k < length; k++) {
fn(this[k],k,this)
}
return {
end:function(fn){
fn(_this);
}
};
}
var d = [1,2,3];
d.forEach((v,i,a)=>{ console.log(v)}).end(function(arr){console.log(arr)})
>> 1
>> 2
>> 3
>> [1, 2, 3]
array.oncomplete = (param) => {
console.log('length = ' + param.detail);
}
array.forEach((item, index, arr) => {
if(index === arr.length - 1){
let myevt = new CustomEvent('complete', {detail: arr.length});
arr.dispatchEvent(myevt);
}
});
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答873 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
可以理解为在循环过程中,满足某个条件提前退出?提前退出可以试试
every
some
findIndex
findIndex、every 在遇到第一个 false , some 在遇到第一个 true 都会提前退出