# 2649. Nested Array Generator
###### tags: `leetcode 30 days js challenge` `Medium`
[2649. Nested Array Generator](https://leetcode.com/problems/nested-array-generator/)
### 題目描述
Given a **multi-dimensional** array of integers, return a generator object which yields integers in the same order as **inorder traversal**.
A **multi-dimensional array** is a recursive data structure that contains both integers and other **multi-dimensional arrays**.
**inorder traversal** iterates over each array from left to right, yielding any integers it encounters or applying **inorder traversal** to any arrays it encounters.
### 範例
**Example 1:**
```
Input: arr = [[[6]],[1,3],[]]
Output: [6,1,3]
Explanation:
const generator = inorderTraversal(arr);
generator.next().value; // 6
generator.next().value; // 1
generator.next().value; // 3
generator.next().done; // true
```
**Example 2:**
```
Input: arr = []
Output: []
Explanation: There are no integers so the generator doesn't yield anything.
```
**Constraints**:
- 0 <= `arr.flat().length` <= 10<sup>5</sup>
- 0 <= `arr.flat()[i]` <= 10<sup>5</sup>
- `maxNestingDepth` <= 10<sup>5</sup>
### 解答
#### TypeScript
```typescript=
type MultidimensionalArray = (MultidimensionalArray | number)[];
function* inorderTraversal(arr: MultidimensionalArray): Generator<number, void, unknown> {
for (let i = 0; i < arr.length; i++) {
if (typeof arr[i] === 'number') {
yield arr[i] as number;
} else {
yield* inorderTraversal(arr[i] as MultidimensionalArray);
}
}
}
```
> [name=Sheep][time=Sat, June 3, 2023]
### Reference
[回到題目列表](https://hackmd.io/@Marsgoat/leetcode_every_day)