gpt4 book ai didi

Javascript嵌套数组用迭代器展平并有下一个和下一个实现

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:46:03 31 4
gpt4 key购买 nike

** 尝试实现一个具有两个方法 next 和 hasNext 的类,我能够在 C++ 和 Java 中找到类似的实现,但在 Javascript 中找不到任何帮助将不胜感激 **


class NestedIterator {
constructor() {}

hasNext() {
//Todo
}

next() {
//Todo
}
}

var list;
var iterator;

/* Should print
* 2
* 4
* 6
*/
list = [2, [4, [6]]];
iterator = new NestedIterator(list);
while (iterator.hasNext()) {
console.log(iterator.next());
}`

最佳答案

这种方法首先展平数组,然后在展平的数组上循环。

class NestedIterator {
constructor(list) {
this.list = [];

let flat = (arr, index) => {
if (index === arr.length) return;

if (Array.isArray(arr[index])) flat(arr[index], 0);
else this.list.push(arr[index]);

flat(arr, ++index);
}

this.index = 0;
flat(list, 0);
this.length = this.list.length;
}

hasNext() {
return this.index < this.length;
}

next() {
if (this.hasNext()) return this.list[this.index++];
else return null; // maybe an error.
}
}

var list;
var iterator;

/* Should print
* 2
* 4
* 6
*/
list = [2, [4, [6]]];
iterator = new NestedIterator(list);
while (iterator.hasNext()) {
console.log(iterator.next());
}

关于Javascript嵌套数组用迭代器展平并有下一个和下一个实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54895922/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com