![](/img/trans.png)
[英]Using array.prototype.fill instead of array.prototype.push
[英]ranges on js using Array.prototype.fill()
我真的對JS和ES6中的一些非常有用的功能不熟悉。 我試圖學習更多有關如何使用fill創建范圍的信息,並且根據一些示例,我已經獲得了以下代碼,以我想要的方式工作,但是我不了解它的實際工作原理。 當我在控制台中打印prevYear和nextYear的值時,我可以看到nextYear每次都增加1,從而使年份增加。 太棒了,但是,如果我沒有為它設置任何值,我想了解nextYear的工作方式。 我嘗試將1加到prevYear上,但操作不正確。 這里我的代碼更加清晰:
startYear = 1900 EndYear = 1910
//此代碼返回= [1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910]
var yearsRange = Array(endYear - startYear + 1).fill(startYear).map((prevYear,nextYear) => prevYear + nextYear);
將這段代碼更改為:
var yearsRange = Array(endYear - startYear + 1).fill(startYear).map((prevYear) => prevYear += 1);
//這將返回[1901、1901、1901、1901、1901、1901、1901、1901、1901、1901、1901]
為什么?
參數被可怕地命名。 prevYear
和nextYear
完全沒有意義(當然,將它們加在一起也不會)。
var yearsRange = Array(endYear - startYear + 1)
.fill(startYear)
.map((startYear, index) => startYear + index);
回調是一個函數。 運行函數時,所有局部變量都相互獨立地工作。 如果有幫助,我們可以使該回調成為命名函數。
let arr = Array(11).fill(1910) let incrementByOne = (num) => { return num += 1 } console.log(arr.map((num) => incrementByOne(num)))
每次您運行incrimentByOne
,它都會從您的數組中接收值,該值始終為1990
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.