首页 > 解决方案 > 使用 next() 遍历两个带有迭代器对象的 JavaScript 数组

问题描述

我想将两个排序的 JavaScript 数组与其中的自定义对象进行比较并计算差异。我想使用迭代器对象来执行此操作,以使用next(). (就像 Java 中的迭代器一样。)在 MDN 中它说:

在 JavaScript 中,迭代器是一个对象,它定义了一个序列,并在其终止时可能会返回一个值。更具体地说,迭代器是通过具有 next() 方法实现迭代器协议的任何对象,该方法返回具有两个属性的对象:值,序列中的下一个值;并完成,如果序列中的最后一个值已被消耗,则为真。如果 value 与 done 一起出现,则它是迭代器的返回值。( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators )

有没有方便的方法从 JavaScript 中的数组中获取迭代器对象?

标签: javascriptarraysiterator

解决方案


就像对于所有可迭代对象一样,要获得一个迭代器,访问它的Symbol.iterator属性来获得生成器,然后调用它来获得迭代器:

const arr = ['a', 'b', 'c'];
const iter = arr[Symbol.iterator]();
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());
console.log(iter.next());

const arr1 = ['a', 'b', 'c'];
const arr2 = ['a', 'b', 'c'];
const iter1 = arr1[Symbol.iterator]();
const iter2 = arr2[Symbol.iterator]();

console.log(iter1.next());
console.log(iter2.next());
console.log(iter1.next());
console.log(iter2.next());


推荐阅读