如何在JavaScript循环中判断当前id与前一个id是否相同?
判断forEach循环中当前元素ID与前一个元素ID是否相同
针对你给出的数组和forEach循环场景,有两种简单的方式可以判断当前元素的ID和前一个元素的ID是否相同:
方法一:用外部变量存储前一个ID
在循环外部声明一个变量来保存上一轮循环的ID,每次循环时和当前ID对比,对比完成后更新变量值:
const array = [ { id : 1, name: 'aaa' }, { id : 1, name: 'asd' }, { id : 2, name: 'asd' } ]; let prevId; // 初始化存储前一个ID的变量 array.forEach(a => { // 从第二个元素开始才做对比(第一个元素没有前一个) if (prevId !== undefined) { const isSameId = a.id === prevId; console.log(`当前ID ${a.id} 和前一个ID ${prevId} 是否相同:${isSameId}`); } // 更新前一个ID为当前ID,供下一次循环使用 prevId = a.id; });
方法二:利用forEach的索引参数获取前一个元素
forEach的回调函数支持第二个参数——当前元素的索引,我们可以通过索引直接从数组中取出前一个元素,再对比两者的ID:
const array = [ { id : 1, name: 'aaa' }, { id : 1, name: 'asd' }, { id : 2, name: 'asd' } ]; array.forEach((a, index) => { // 索引大于0时,才有对应的前一个元素 if (index > 0) { const prevItem = array[index - 1]; const isSameId = a.id === prevItem.id; console.log(`当前ID ${a.id} 和前一个ID ${prevItem.id} 是否相同:${isSameId}`); } });
注意点
- 如果数组是空数组或者只有一个元素,两种方法都不会触发对比逻辑,符合实际需求(没有前一个元素可对比)。
- 两种方法都能直接在你原有的
forEach循环结构上修改实现,不需要额外调整数组结构。
内容的提问来源于stack exchange,提问作者Ahsan Baloch
相关产品推荐
相关产品推荐

