您好,登錄后才能下訂單哦!
這篇文章主要講解了“js數組連續篩選處理方法是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“js數組連續篩選處理方法是什么”吧!
算法面試題:
有一個數組[1,1,1,2,3,4,5,8,10,22,24,25,26,66],請寫一個方法把數組變成[1,1,[1,2,3,4,5],8,10,22,[24,25,26],66]
大體思路就是循環遍歷,每次遍歷判斷當前項是否與前一項差值為1,這里需要考慮若結果為1,如何處理,結果不為1如何處理。
結果不為1,我們可以直接將當前項插入結果數組,但是這里我們需要考慮邊界問題,我們設置兩個變量,第一個變量數組長度len,第二個變量數組遍歷開始的位置i,為了方便,我們將i設置為1。
此時代碼如下:
var len = arr.length;
var res = [];
for (var i = 1; i <= len; i++) {
// something
}
加上判斷邏輯:
var len = arr.length;
var res = [];
for (var i = 1; i <= len; i++) {
if(arr[i]-arr[i-1]!==1){
// someting
}else{
// someting
}
}
接下來如何做呢?
我們可以這么干,再次聲明一個標記變量j,j的初始值為0;
此時我們再次觀察一下需要處理的數組:
[1,1,1,2,3,4,5,8,10,22,24,25,26,66]
通過觀察數組我們可以發現,當我們循環遍歷每一項,從腳標1開始,如果當前項與前一項的差值不為1,我們可以直接將前一項推入結果數組,并標記此時的i值,即將i值賦值為j來保存。
如果差值等于1,什么也不做,直接跳過,再次觀察上面的數組,當判斷遇到:”1,2,3,4,5”,這幾項時,直接跳過,此時res的結果是[1,1],之后接著循環,當循環遍歷判斷8-5時,我們需要將1,2,3,4,5作為一個數組整體推入結果數組。
此時發現j的值為2,i的值為7,我們只需要將原數組中第二項到第七項(不包括第七項)截取出來,塞進結果數組,并更新j值。
那么在代碼中執行時,何時塞入當前項(前一項),何時塞入截取的的數組呢?可以根據i和j的差值來判斷,若i-j的差值大于一,則截取原數組j到i的結果塞入結果數組,代碼如下:
var arr = [1,1,1,2,3,4,5,8,10,22,24,25,26,66]
var len = arr.length
var i = 1, j = 0
var rst = []
for(; i <= len; i++) {
if(arr[i]-arr[i-1] !== 1) {
i-j===1 ? rst.push(arr[j]) : rst.push(arr.slice(j, i))
j = i
}
}
console.log(rst);
代碼里用到了一個三元運算符,通過判斷i與j的差值來判斷向數組中塞入何值。
感謝各位的閱讀,以上就是“js數組連續篩選處理方法是什么”的內容了,經過本文的學習后,相信大家對js數組連續篩選處理方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。