web-dev-qa-db-ja.com

Javascript配列のページ付け

パラメーターとしてarraypage_sizeおよびpage_numberを取り、ページ分割された結果を模倣する配列を返すJavascript関数を作成しようとしています。

paginate: function (array, page_size, page_number) {
  return result;
}

たとえば、次の場合:

array = [1, 2, 3, 4, 5],
page size = 2,
page_number = 2,

関数は[3, 4]を返す必要があります。

任意のアイデアをいただければ幸いです。

36
SalmaFG

Array.prototype.slice を使用して、(start, end)のパラメーターを指定するだけです。

function paginate (array, page_size, page_number) {
  --page_number; // because pages logically start with 1, but technically with 0
  return array.slice(page_number * page_size, (page_number + 1) * page_size);
}

console.log(paginate([1, 2, 3, 4, 5, 6], 2, 2));
console.log(paginate([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], 4, 1));
78
casraf

あなたが利用できる別のアプローチは、.filterを使用することです:

const paginate = function (array, index, size) {
        // transform values
        index = Math.abs(parseInt(index));
        index = index > 0 ? index - 1 : index;
        size = parseInt(size);
        size = size < 1 ? 1 : size;

        // filter
        return [...(array.filter((value, n) => {
            return (n >= (index * size)) && (n < ((index+1) * size))
        }))]
    }

var array = [
  {id: "1"}, {id: "2"}, {id: "3"}, {id: "4"}, {id: "5"}, {id: "6"}, {id: "7"}, {id: "8"}, {id: "9"}, {id: "10"}
 ]


var transform = paginate(array, 2, 5);

console.log(transform) // [{"id":"6"},{"id":"7"},{"id":"8"},{"id":"9"},{"id":"10"}] 
0
Dax Aquatic