鍍金池/ 問答/HTML/ JavaScript分頁算法原理是什么

JavaScript分頁算法原理是什么

clipboard.png
上面圖片的實(shí)現(xiàn)分頁算法的代碼有點(diǎn)看不明白?
一、const聲明的page不是常量嗎?forEach每次循環(huán)遍歷的話,page不是要改變嗎?但是為啥沒有報錯,是不是我理解錯了,還是我的知識點(diǎn)盲區(qū)?
二、整體的算法有點(diǎn)看不明白,請各位大佬幫忙指點(diǎn)一下,謝謝
代碼:
pages(){

const=[]
this.iconList.forEach((item,index) => {
    const page =Math.floor(index/8)
    if(!pages[page]){
    pages[page]=[]
    }
    pages[page].push(item)
})
return pages

}

回答
編輯回答
巫婆

1: forEach的作用域里面的const 不涉及修改

2: index傳入為0 1 2.... 他這邊8個處理一次 0-8 都是處理為0
最終格式應(yīng)該為:

[{
  X :...,
   ...
},{},{}]
2018年2月17日 10:45
編輯回答
逗婦乳

你這個const 常量的 作用域范圍在 forEach 的 匿名函數(shù)內(nèi)部,有一個函數(shù)調(diào)用堆棧的 概念,每次執(zhí)行函數(shù),函數(shù)入棧,執(zhí)行完畢,出棧,就會銷毀此函數(shù)上下文。
然后一頁存放 8條數(shù)據(jù),8條數(shù)據(jù)存為一個數(shù)組,如果到了臨界點(diǎn),就聲明一個空的數(shù)組,用來存放接下來的8條數(shù)據(jù)。

2017年3月5日 09:33
編輯回答
維她命

每次循環(huán)遍歷的const page的作用域只是當(dāng)前的箭頭函數(shù),函數(shù)執(zhí)行完生命周期就結(jié)束了;因此不存在重復(fù)聲明的問題;

整體邏輯很簡單啊,沒有什么算法;

pages(){
    // 最終分頁結(jié)果
    const pages=[]
    // 遍歷icon列表
    this.iconList.forEach((item,index) => {
        // 每8條為一頁;例:0-7為第一頁
        // page為當(dāng)前頁碼;
        const page =Math.floor(index/8)
        // 判斷pages中當(dāng)前頁的存儲數(shù)組是否已聲明,未聲明則聲明當(dāng)前頁為數(shù)組格式;
        if(!pages[page]){
            pages[page]=[]
        }
        // 將當(dāng)前icon信息放入對應(yīng)的頁碼數(shù)組中;
        pages[page].push(item)
    })
    // 返回分頁之后的icon集合;
    return pages
}
2017年5月2日 04:01