如何从数组的数组中返回下一个值

Shu*_*til 0 javascript typescript angular angular9

我需要在每个函数调用中从数组的数组中迭代下一个值。

forex:如果我有一个数组的数组

const Arr = [ ['1','2', '3'], ['11','12', '13'], ['11','22', '33'],]
Run Code Online (Sandbox Code Playgroud)

我有一个函数

getNumber(id: number): string {
 let n;
 for(const i in Arr) {
    for(const j in Arr[i]{
       n = j;
    }
 }
 return n;
}
             
Run Code Online (Sandbox Code Playgroud)

我在这里需要多次调用该函数,但每次它都应该返回下一个数字

let i = 4;
for(let j=0; j<=i; j++) {
  const g = { 
   number: this.getNumber(i); //this i means id
  }
}
Run Code Online (Sandbox Code Playgroud)

调用函数后,它会像这样返回

'1'
'2'
'3'
'11'
'12'
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题

Rey*_*yno 6

您可以使用生成器在每次调用该函数时获取下一个值。

要将多维数组转换为平面数组,可以使用Array.flat()方法。

const Arr = [ ['1','2', '3'], ['11','12', '13'], ['11','22', '33'],];

function* getNumber(arr) {  
  for(const num of arr) {
    yield num;
  }
}

const gen = getNumber(Arr.flat());

console.log(gen.next().value);
console.log(gen.next().value);
console.log(gen.next().value);
console.log(gen.next().value);
console.log(gen.next().value);
Run Code Online (Sandbox Code Playgroud)