javascript - 关于满足5的倍数数组判断问题?
天蓬老师
天蓬老师 2017-04-11 11:49:05
[JavaScript讨论组]
var aa = [];
var bb = [];  
for(var i=0;i<6;i++){
    aa.push(i)
    //bb do thing
 }

// 然后 如上 如果循环长度为6的话 我想让bb变量成这样 bb = [[0,1,2,3,4],[5]] 每单个数组五个满的话就换成下个数组 该如何实现??

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(4)
阿神
var aa = [];
var bb = [];  
var t = [];
for(var i=0;i<6;i++){
    aa.push(i);
    t.push(i);
    if(i%5===4) { bb.push(t); t = [];}
 }
bb.push(t);

 // b.length===1 && b = b[0];
阿神

代码来了,虽然是个简单问题,写Functional和写流程图方式还是不一样:

var testData = [ 
  [], 
  [0],
  [0, 1], 
  [0, 1, 2, 3, 4], 
  [0, 1, 2, 3, 4, 5], 
  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 
]

var falsify = () => false
var group = (n, x) => x.reduce((p,c,i) =>  
  falsify((i%n) ? p[p.length-1].push(c) : p.push([c])) || p, []) 

testData.forEach(data => console.log(group(5, data)))

如果支持spread operator,容易写成pure/immutable的,但效率会有牺牲,不能用于处理太大的数组:

var group2 = (n, x) => x.reduce((p,c,i) => 
  i%n ? [...p.slice(0, -1), [...p.slice(-1)[0], c]] : [...p, [c]], [])
ringa_lee

slice 可以拿來切割數組,剛好可以用在這裡

var arr1 = [],
    arr2 = []

const times = 6,
      perGroup = 5

for(let i = 0 ; i < times ; i++) {
    arr1.push(i)
}

for(let i = 0 ; i < arr1.length ; i += perGroup) {
    arr2.push(arr1.slice(i, i + perGroup))
}

console.log(arr1)
console.log(arr2)

實現

PHPz
function arrGen(total) {
  var arr = [[]]

  for (var i = 0, idx = 0; i < total; i++) {
    if (i && !(i % 5)) arr[++idx] = []
    arr[idx].push(i)
  }

  return arr
}

console.log(arrGen(0))
console.log(arrGen(1))
console.log(arrGen(3))
console.log(arrGen(5))
console.log(arrGen(6))
console.log(arrGen(10))
console.log(arrGen(11))
console.log(arrGen(15))

输出:

[ [] ]
[ [ 0 ] ]
[ [ 0, 1, 2 ] ]
[ [ 0, 1, 2, 3, 4 ] ]
[ [ 0, 1, 2, 3, 4 ], [ 5 ] ]
[ [ 0, 1, 2, 3, 4 ], [ 5, 6, 7, 8, 9 ] ]
[ [ 0, 1, 2, 3, 4 ], [ 5, 6, 7, 8, 9 ], [ 10 ] ]
[ [ 0, 1, 2, 3, 4 ], [ 5, 6, 7, 8, 9 ], [ 10, 11, 12, 13, 14 ] ]
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号