首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JS对象阵列分页

JS对象阵列分页
EN

Stack Overflow用户
提问于 2015-03-03 20:56:14
回答 2查看 4K关注 0票数 2

我需要一些帮助,用5来操作/分页JS数组对象:

代码语言:javascript
运行
复制
var musicItems = [
    ["assets/audio/1.wav"],
    ["assets/audio/2.wav"],
    ["assets/audio/3.wav"],
    ["assets/audio/4.wav"],
    ["assets/audio/5.wav"],
    ["assets/audio/6.wav"],
    ["assets/audio/7.wav"],
    ["assets/audio/8.wav"],
];

我想知道JS中的集合(2)的数量,以及哪些元素属于哪个集合(set1->1-5,set 2->6-8)。感谢你的帮助。

编辑我想做一些类似Split array into chunks的事情

但是正如你所看到的,我的数组是不同的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-03 22:12:28

这只是一个简单的演示,说明如何使用modulo操作符%实现这一点。将有更有效和更小的解决办法。

代码语言:javascript
运行
复制
var musicItems = [
    ["assets/audio/1.wav"],
    ["assets/audio/2.wav"],
    ["assets/audio/3.wav"],
    ["assets/audio/4.wav"],
    ["assets/audio/5.wav"],
    ["assets/audio/6.wav"],
    ["assets/audio/7.wav"],
    ["assets/audio/8.wav"],
];

var sets = new Object();
var set = new Array();
var setCounter = 0;

for(var i = 0; i < musicItems.length; i++) {
    set.push(musicItems[i]);

    if((i + 1) % 5 == 0 || (i + 1) >= musicItems.length) {
        setCounter++;
        sets['set' + setCounter] = set;
        set = new Array();
    }
}

console.log(sets['set1']);
console.log(sets['set2']);

基本上,这是在musicItems中迭代,使用模块%5,我们检查当前项是否可以被5分隔,而不需要rest,因此我们知道集合是完整的,因为我们收集了5个项。然后,我们将集合添加到整个set对象中,以便稍后将其用作字典(如“set1”、“set2”等所希望的那样)。我们清除当前的集合,用下一个n-5项填充它。

票数 4
EN

Stack Overflow用户

发布于 2015-12-11 23:28:03

布雷夫:

代码语言:javascript
运行
复制
  max=5,j=0;
  for(var i=0;i<musicItems.length;i=i+max){
        j++;
       sets['set' + j] = musicItems.offset(i).max(max);
  }

解释

分页概念依赖于两个参数:

  1. 抵销:
  2. 马克斯:

然后:

代码语言:javascript
运行
复制
musicItems.offset(0).max(5) ;   // 1st set
   // >  [ ["assets/audio/1.wav"],["assets/audio/2.wav"],["assets/audio/3.wav"],["assets/audio/4.wav"],["assets/audio/5.wav"]  ]
musicItems.offset(0+5).max(5) ;  // second set
   // >  [ ["assets/audio/6.wav"],["assets/audio/7.wav"],["assets/audio/8.wav"] ]

所需API:

代码语言:javascript
运行
复制
Array.prototype.max = function(mx) {
   return this.filter(function(e,i){return i < mx;}); }
};

Array.prototype.offset=function(os){
   return this.filter(function(e,i){return i> os-1 });
 };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28841721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档