問題描述:在不使用迴圈的條件下,如何建立乙個長度為100的陣列,並且陣列的每乙個元素是該元素的下標?
這是乙個比較經典的前端面試題,也可以當筆試題,咋一看,好像難度不大,實際上考察的知識點還不少,值得寫篇文章來備忘!廢話不多說,直接進入正文!
為了理解這道題的意思,我們先用傳統的方法來實現一下:
使用for方法:
var arr = new array(100);或者是:for(var i=0;i)
console.log(arr);
var arr = new可以得到乙個0-99的陣列,使用while,do while也可以實現,這裡就不寫了,那不用迴圈,怎麼得到呢?array();
for(var i=0;i<100;i++)
console.log(arr);
第一種:object.keys()
但是這裡得到的陣列是乙個字串陣列,不是數字,所以我們需要再加工一下,字串轉數字的方法就很多了,這裡用map()方法:
(item));
console.log(arr);
+號是乙個轉換格式的小技巧,你也可以使用parseint
第二種:array.from()
var arr = array.from(, (v,k) =>k);這裡使用的array.from()方法,從類陣列或可迭代的物件建立乙個新陣列,你不懂用法,去查查吧!console.log(arr);
第三種:array.keys()
var arr = new array(100).keys();這裡主要使用array.keys()方法,獲取陣列的key值console.log(array.from(arr));
第四種:object.keys() 與 array.from()
var arr = object.keys(array.from());這種方式建立的也是乙個字串陣列,所以需要轉一下,方式跟第一種一樣console.log(arr);
var arr = object.keys(array.from()).map(function實現原理大致說一下,先用array.from得到乙個100值為undefined的陣列,然後獲取陣列的key值,最終返回乙個陣列,不明白的可以仔細領會一下第二種和第三種(item));
console.log(arr);
第5種:使用...擴充套件運算子
var arr = [...array(100).keys()];或者可以改寫成:console.log(arr);
var arr = [...array.from().keys()];不熟悉擴充套件運算子的可以去es6教程裡面看一下,這裡就不介紹了console.log(arr);
第6種:使用string()方法,比較特別
var arr = object.keys(string(array(101)));這裡需要用101位,為什麼?因為在建立乙個100個值的陣列的時候,因為是空值陣列,在將陣列轉成字串的時候,實際上是存的空值之間的逗號(,),2個值才有乙個逗號,3個值有2個逗號,以此類推,100個值需要101位,然後用object.keys()console.log(arr);
方法轉成陣列,弄懂前面的方法的應該知道,此時的陣列是乙個字串陣列,所以還需要安裝方法一處理一下:
var arr = object.keys(string(array(100))).map(function第7種:使用(item));
console.log(arr);
int8array(),比較偏門
var arr = object.keys(new int8array(100)).map(function需要了解原理的同學,建議看一下int8array()的api(item));
console.log(arr);
第8種:setinterval方法,感覺更偏門了
var arr =;通過定時器的思路,給陣列賦值,確實很妙var i = 0;
var timer = setinterval(function
() },1);
第9種:受定時器啟發,可以用遞迴呼叫
var arr =;第10種:可以使用第七種的變種,請看:var i = 0;
function
makearray(num)
return
arr;
}console.log(makearray(100));
var arr = new array(100).tostring().split(',').map(function我覺得這個知識點給出10種方法,應該差不多了,但是方法遠遠不止這10種,比如說擷取網頁中的100個字元,然後獲取索引,比如說用二進位制等等,奇淫巧技數不勝數,這裡就不一一贅述了!(item,index));
console.log(arr);
我覺得乙個話題或者說乙個命題,能夠牽扯出別的知識點,學習到更多的技巧,那這個命題就是有價值的,也是有意義的,不想多說了,一張圖結束今天的話題!
不用迴圈,es6建立乙個長度為100的陣列
問題描述 在不使用迴圈的條件下,如何建立乙個長度為100的陣列,並且陣列的每乙個元素是該元素的下標?結果為 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,3...
C語言 不使用迴圈判斷乙個數是否為2的N次方
對於判斷乙個數是否為2的n次方問題,通常想到的最為直接的辦法就是對這個數不斷對2取餘,為0就將該數變為該數除以2,直到最後該數為1為止。void judge int n printf no n return 不過上面的方法並不是較好的方法,其實還有更為簡潔高效的方法 乙個整數,若是2的n次方,有沒有...
Qt 為自己的程式建立乙個訊息迴圈
at any time,you can create a qeventloop object and call exec on it to start a local event loop.from within the event loop,calling exit will force exec...