??個人主頁: 阿選不出來
??個人簡介: 大三學生,熱愛Web前端,隨機掉落學習碎片
??目前開發(fā)的專欄: JS ??Vue??React????祝愿今天的你比昨天更加博識了!
數(shù)組扁平化
題目描述
請補全JavaScript代碼,要求將數(shù)組參數(shù)中的多維數(shù)組擴展為一維數(shù)組并返回該數(shù)組。
注意:
- 數(shù)組參數(shù)中僅包含數(shù)組類型和數(shù)字類型
題解
遞歸
遍歷數(shù)組 并 判斷遍歷的當前元素的數(shù)據(jù)類型,分為以下兩種情況:
- 類型為數(shù)值:添加該元素到輸出數(shù)組中。
- 類型為數(shù)組:重復上訴操作。
const _flatten = arr => {
return arr.reduce((target, item) => {
return target.concat(Array.isArray(item) ? _flatten(item) : item);
}, [])
}
其中參數(shù) target為輸出數(shù)組,item為遍歷的當前元素
字符串法
a. 利用toString()
方法,將數(shù)組轉(zhuǎn)為字符串,在使用split()
方法,以","
為分割變?yōu)閿?shù)組。
b. 利用join()
方法將數(shù)組轉(zhuǎn)為字符串且用","
分割,在利用上訴split()
方法以","
為分割變?yōu)閿?shù)組。
const _flatten = arr => {
return arr.toString().split(",")
}
const _flatten = arr => {
return arr.join(",").split(",")
}
簡單粗暴法
思路:
使用while循環(huán)檢測數(shù)組,只要數(shù)組中存在元素的數(shù)據(jù)類型為數(shù)組,就利用擴展運算符將該元素的可遍歷屬性追加到輸出數(shù)組中展開直到數(shù)組元素的數(shù)據(jù)類型均為數(shù)值為止。
const _flatten = arr => {
while(arr.some(item=>{Array.isArray(item)})){
arr = [].concat(...arr)
}
return arr
}
some() :測試數(shù)組中是否至少有一個元素通過了由提供的函數(shù)實現(xiàn)的測試,在本題中用于測試數(shù)組中是否存在元素的數(shù)據(jù)類型為數(shù)組。
擴展運算符(…):取出參數(shù)對象中的所有可遍歷屬性,拷貝到當前對象之中。在本題中擴展運算符(…)用于取出被檢測到元素類型為數(shù)組的對象內(nèi)的所有可遍歷屬性,并使用concat方法拷貝到輸出數(shù)組中。
判斷質(zhì)數(shù)
題目描述
請補全JavaScript代碼,要求在Number對象的原型對象上添加"_isPrime"函數(shù),該函數(shù)判斷調(diào)用的對象是否為一個質(zhì)數(shù),是則返回true,否則返回false。
題解
質(zhì)數(shù)的定義,不能被除了1和它本身的數(shù)字因式分解的數(shù)字,對應到數(shù)學的概念就是取余為0
雙指針
Number.prototype._isPrime = function(){
let j=this-1;
for(let i=2; i<j;i++){
if(i>=j)break
if(!(this%i) || !(this%j)){
return false
}
j--
}
return true
}
平方根
假設Number數(shù)值為c, 若a * b = c 且(a<=b)則a,b需滿足 a<=Math.sqrt?<=b,因此只用依次讓[2,Math.sqrt?]范圍內(nèi)的數(shù)值對number進行取余數(shù)檢驗。
Number.prototype._isPrime = function(){
for(let i=2; i <= Math.sqrt(this); i++){
if(!(this%i)){
return false
}
}
return true
}
獲取字符串的長度
題目描述
如果第二個參數(shù) bUnicode255For1 === true,則所有字符長度為 1
否則如果字符 Unicode 編碼 > 255 則長度為 2
示例:
輸入:
'hello world, 牛客', false
輸出:
17
題解
function strLength(s, bUnicode255For1) {
if(bUnicode255For1){
return s.length
}else{
let length = 0
for(let i=0; i<s.length; i++){
if(s[i].codePointAt() > 255){
length += 2
}else{
length += 1
}
}
return length
}
}
codePointAt(index)
作用:返回一個非負整數(shù),該整數(shù)是從給定索引開始的字符的 Unicode 碼位值。文章來源:http://www.zghlxwxcb.cn/news/detail-722360.html
參數(shù):index文章來源地址http://www.zghlxwxcb.cn/news/detail-722360.html
- 字符串的索引,返回指定字符的Unicode碼位值。
到了這里,關(guān)于【JavaScript】JS能力測試題:數(shù)組扁平化 | 判斷質(zhì)數(shù) | 獲取字符串的長度的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!