codewars 5 kyu PaginationHelper

codewars 5 kyu PaginationHelper

我的题解

构造函数并完成方法。

// TODO: complete this object/class

// The constructor takes in an array of items and a integer indicating how many
// items fit within a single page
function PaginationHelper(collection, itemsPerPage) {
  this.collection = collection;
  this.itemsPerPage = itemsPerPage;
}

// returns the number of items within the entire collection
PaginationHelper.prototype.itemCount = function () {
  return this.collection.length;
};

// returns the number of pages
PaginationHelper.prototype.pageCount = function () {
  return Math.ceil(this.collection.length / this.itemsPerPage);
};

// returns the number of items on the current page. page_index is zero based.
// this method should return -1 for pageIndex values that are out of range
PaginationHelper.prototype.pageItemCount = function (pageIndex) {
  //   console.log(pageIndex,this.collection,this.itemsPerPages)
  if (pageIndex > this.pageCount() - 1) {
    return -1;
  } else if (pageIndex == this.pageCount() - 1) {
    return this.collection.length % this.itemsPerPage;
  } else {
    return this.itemsPerPage;
  }
};

// determines what page an item is on. Zero based indexes
// this method should return -1 for itemIndex values that are out of range
PaginationHelper.prototype.pageIndex = function (itemIndex) {
  if (!this.collection.length) {
    return -1;
  } else if (itemIndex > this.collection.length || itemIndex < 0) {
    return -1;
  } else {
    return Math.floor(itemIndex / this.itemsPerPage);
  }
};

优秀题解

class PaginationHelper {
  constructor(a, p) {
    Object.assign(this, { a, p });
  }
  itemCount() {
    return this.a.length;
  }
  pageCount() {
    return -~(this.a.length / this.p);
  }
  pageItemCount(i) {
    return i < this.pageCount()
      ? (i + 1) * this.p <= this.itemCount()
        ? this.p
        : this.itemCount() % this.p
      : -1;
  }
  pageIndex(i) {
    return i < 0 || i >= this.itemCount() ? -1 : (i / this.p) | 0;
  }
}
function PaginationHelper(collection, itemsPerPage) {
  this.collection = collection, this.len = this.collection.length, this.ipp = itemsPerPage;
}
PaginationHelper.prototype.itemCount = function() {return this.len;}
PaginationHelper.prototype.pageCount = function() {return Math.ceil(this.len / this.ipp);}
PaginationHelper.prototype.pageItemCount = function(pageIndex) {
  var pc = this.pageCount();
  return pc <= pageIndex || pageIndex < 0 ? -1 : pc - 1 == pageIndex ? this.len % this.ipp : this.ipp;
}
PaginationHelper.prototype.pageIndex = function(itemIndex) {
  return this.len <= itemIndex || itemIndex < 0 ? -1 : Math.floor(itemIndex / this.ipp);

总结

学到了 JS 的函数写法,以及函数的声明、调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值