javascript中多维数组的迭代器

Iterator for multiple dimension array in javascript

本文关键字:迭代器 数组 javascript      更新时间:2024-02-28

我正在为多维数组寻找迭代器,我可以轻松地在数组中迭代。例如:

var multipeArrayLike = [[1,[21,22],3,4],[5,6,7,8]]
var iterator = getIterator(multipeArrayLike)
console.log(iterator.next().value) // should return 1 
console.log(iterator.next().value) // should return 21
console.log(iterator.next().value) // should return 22
console.log(iterator.next().value) // should return 3
console.log(iterator.next().value) // should return 4
console.log(iterator.next().value) // should return 5
....
console.log(iterator.next().value) // should return 8

您可以使用类似于以下的递归生成器:

'use strict';
function *flat(a) {
    if (!Array.isArray(a)) {
        yield a;
    } else {
        for (let x of a)
            yield *flat(x);
    }
}
var multipeArrayLike = [[1, [21, 22], 3, 4], [5, 6, 7, 8]]
for (let y of flat(multipeArrayLike))
    document.write('<pre>'+JSON.stringify(y,0,3));