自行使用 map() 建立 range()

很多語言都有內建 range() 建立 array,只要傳入 起始值結束值 即可,ECMAScript 沒有內建此 function,只好自己寫一個。

Version


ECMAScript 5

Range()


1
2
3
4
5
6
7
const range = start => end => {
const length = (end - start) + 1;
return [...Array(length).keys()].map(i => i + start);
};

const result = range(1)(12);
console.log(result);

Array(length) 先建立 empty array,雖然是 empty,但 key 仍是存在的,再使用 Array Spread 展開,此時為 [0, 1, 2 ...] 的 array。

最後使用 map() 建立從 start 開始的 array。

range000

Conclusion


  • Array(length) 可建立 empty array
  • Array.prototype.keys() 會傳回 array 的所有 key 作為新的 array
2018-12-17