0

我已经声明了总共 5 个数组项。我将其分组为 3 或 n 组并得到总数。我写了这段代码。

const list = [
  {
    id: 1,
    name: 'foo'
  },
  {
    id: 2,
    name: 'bar'
   },
   {
    id: 3,
    name: 'fubar'
   },
   {
    id: 4,
    name: 'barz'
   },
   {
    id: 5,
    name: 'foobar'
   }
]
const itemCounts = list.length
const page = 3 or n
const totalPage = Math.ceil(itemCounts / page)

我想我是这样分组的。

[ 'foo' ][ 'bar' ][ 'fubar'] -- group1
[ 'barz'][ 'foobar']         -- group2

这是该组的总数。

console.log('totalGroupPage', totalPage)

//output
2

我有个问题。例如,我有索引 2,即第二项{ id: 3, name: 'fubar' }

我想知道这个项目所属的组号。

// example
getGroupIndex(2) // list[2]

// I wanna group number
1


getGroupIndex(3) // list[3]

// I wanna group number
2

你如何实现这个getGroupIndex()功能?

4

1 回答 1

0

您可以通过将索引除以您想要的每个元素的数量来找到组号page。然后,您可以将其设置为底,并添加 1(因为您将数字从 1 而不是 0 开始分组):

group = Math.floor(idx / page) + 1;

请参见下面的示例:

const list = [
  { id: 1, name: 'foo' }, { id: 2, name: 'bar' }, { id: 3, name: 'fubar' }, 
  { id: 4, name: 'barz' }, { id: 5, name: 'foobar' }
];
const page = 3;

const getGroupNumber = idx  => Math.floor(idx / page) + 1;

list.forEach((_, i) => console.log(getGroupNumber(i)));

于 2021-03-05T09:18:37.840 回答