** एक वर्ग को लागू करने की कोशिश कर रहा है जिसमें दो विधियां हैं और अगला है मैं सी ++ और जावा में समान कार्यान्वयन खोजने में सक्षम था लेकिन जावास्क्रिप्ट नहीं, किसी भी हेप की बहुत सराहना की जाएगी **


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());
}`
1
Ajay 27 फरवरी 2019, 02:43

1 उत्तर

सबसे बढ़िया उत्तर

यह दृष्टिकोण पहले सरणी को फ़्लैट करता है, और फिर फ़्लैटेड सरणी पर लूप करता है।

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());
}
2
Ele 26 फरवरी 2019, 23:59