Genie

学んだ事

Paganation

問題概要

Mikeはウェブサイトの開発を担当しており、ページネーションの実装を任されました。
URLの配列urls、1ページあたりのURL数pageSize、表示する特定のページ番号pageが与えられたとき、
指定されたページに表示するURLを返す関数websitePaginationを作成してください。
例えば、url1からurl9までのURLリストがあり、1ページに表示するURLの数が3、目標とするページが2ページ目である場合、
この関数はurl4、url5、url6を含む配列を返すべきです。これらのURLは2ページ目に表示されるべきものです。

 

出入力例


Example 1:

Input: urls = ["url1","url2","url3","url4","url5","url6"], pageSize = 4, page = 1
Output: [url1,url2,url3,url4]

Example 2:

Input: urls = ["url1","url2","url3","url4","url5","url6","url7","url8","url9"], pageSize = 3, page = 2
Output: [url4,url5,url6]

Example 3:


Input: urls = ["url1","url2","url3","url4","url5","url6","url7","url8","url9"], pageSize = 4, page = 3 
Output: [url9]

 

実装(TypeScript)

function websitePagination(urls: string, pageSize: number, page: number): string {
    const startIndex: number = (page - 1) * pageSize;
    const endIndex: number = startIndex + pageSize;
    return urls.slice(startIndex, endIndex);
}

解説

1:開始インデックスの計算

まずそのページに最初に表示されるURLの配列内位置を特定する。

(page - 1) * pageSizeで計算される。

例えば、pageSize= 4, page = 3の場合は

(3 - 1) * 4となりstartIndex = 8になる。

そしたら配列内の9番目「url9」が開始インデックスになる

 

2:終了インデックスの計算

次に終了インデックスを特定する。

これはstartIndex + pageSize;で計算できる。

またpageSize = 4, page = 3で

8+4=12で[8:12]で5個抽出されると思うが,sliceメソッドは終了インデックス自体の要素は含まれないため問題ない。

 

3:URL抽出

最後に配列の`slice`メソッドを使用し、特定する。