The enumerate function in Javascript

  • 时间:2020-09-16 12:48:17
  • 分类:网络文摘
  • 阅读:150 次

In Python, the enumerate function is an iterator that returns/yield each time a tuple that contains an index (starting from 0 and incrementing) and the element in the list.

In Javascript, we can implement the enumerate function using the iterator and the yield keyword (the asteroid star immediate after function keyword indicates that the function should return an iterator via the yield keyword).

1
2
3
4
5
function *enumerate(array) {
   for (let i = 0; i < array.length; i += 1) {
      yield [i, array[i]];
   }
}
function *enumerate(array) {
   for (let i = 0; i < array.length; i += 1) {
      yield [i, array[i]];
   }
}

Since Javascript does not have a Tuple-type, but we can use array anyway. We can use the defined enumerate function like below:

1
2
3
4
const list = ['a', 'b', 'c'];
for (let x of enumerate(list)) {
   console.log(x);
}
const list = ['a', 'b', 'c'];
for (let x of enumerate(list)) {
   console.log(x);
}

That should output the following:

1
2
3
[0, 'a']
[1, 'b']
[2, 'c']
[0, 'a']
[1, 'b']
[2, 'c']

As you can see, the incrementing index is coupled with the element in the original list/array.

Also, we can use the iterator.next() function until iterator.done is true.

1
2
3
4
5
6
let it = enumerate(['a', 'b', 'c', 'd'])
let result = it.next();
while (!result.done) {
    console.log(result.value)
    result = it.next();
}
let it = enumerate(['a', 'b', 'c', 'd'])
let result = it.next();
while (!result.done) {
    console.log(result.value)
    result = it.next();
}

This should print the following:

1
2
3
4
[ 0, 'a' ]
[ 1, 'b' ]
[ 2, 'c' ]
[ 3, 'd' ]
[ 0, 'a' ]
[ 1, 'b' ]
[ 2, 'c' ]
[ 3, 'd' ]

–EOF (The Ultimate Computing & Technology Blog) —

推荐阅读:
How Do You Increase Website Domain Authority?  Bitcoin Expert Regrets Blogging About Rumored Bitcoin Creator  WordPress Theme Seller, Templatic, Warns Users Of Hacking  Samsung Utilizes Virtual Reality Stories For Children’s Bedtimes  6 Things You Need to Do Before Writing a Single Word on Your Blo  Verge Introduces Innovative Gadget Blog, ‘Circuit Breaker’  5 Tools That Will Grow Your Online Retail Business  #PlaylistsForLife: Doctors Without Borders Launches Awareness Ca  Setting up WordPress to Run a User-Driven Site  Online Multiplayer Game Goes Viral By Reinventing A Classic 
评论列表
添加评论