FreeCodeCamp:Chunky Monkey

本文介绍了一种将数组按指定大小分割成多个子数组的方法,并提供了四种不同的实现方式。这些方法使用JavaScript编写,适用于需要对数组进行分块处理的场景。

要求:

猴子吃香蕉可是掰成好几段来吃哦!

把一个数组arr按照指定的数组大小size分割成若干个数组块。

例如:chunk([1,2,3,4],2)=[[1,2],[3,4]];

chunk([1,2,3,4,5],2)=[[1,2],[3,4],[5]];

结果:

chunk(["a", "b", "c", "d"], 2) 应该返回 [["a", "b"], ["c", "d"]].
chunk([0, 1, 2, 3, 4, 5], 3) 应该返回 [[0, 1, 2], [3, 4, 5]].
chunk([0, 1, 2, 3, 4, 5], 2) 应该返回 [[0, 1], [2, 3], [4, 5]].
chunk([0, 1, 2, 3, 4, 5], 4) 应该返回 [[0, 1, 2, 3], [4, 5]].
chunk([0, 1, 2, 3, 4, 5, 6], 3) 应该返回 [[0, 1, 2], [3, 4, 5], [6]].
chunk([0, 1, 2, 3, 4, 5, 6, 7, 8], 4) 应该返回 [[0, 1, 2, 3], [4, 5, 6, 7], [8]].

代码:

方法1:

 1 function chunk(arr, size) {
 2   // Break it up
 3   var temp = [];
 4   var result = [];
 5 
 6   for (var a = 0; a < arr.length; a++) {
 7     if (a % size !== size - 1)
 8       temp.push(arr[a]);
 9     else {
10       temp.push(arr[a]);
11       result.push(temp);
12       temp = [];
13     }
14   }
15 
16   if (temp.length !== 0)
17     result.push(temp);
18   return result;
19 }

方法二:

 1 function chunk(arr, size) {
 2   // Break it up
 3   // It's already broken :(
 4   arr = arr.slice();
 5   var arr2 = [];
 6   for(var i = 0, len = arr.length; i < len; i+=size) {
 7     arr2.push(arr.slice(0, size));
 8     arr = arr.slice(size);
 9   }
10   return arr2;
11 }

方法三:

 1 function chunk(arr, size) {
 2   // Break it up.
 3   var newArr = [];
 4   var i = 0;
 5 
 6   while (i < arr.length) {
 7     newArr.push(arr.slice(i, i+size));
 8     i += size;
 9   }
10   return newArr;
11 }
12 chunk(["a", "b", "c", "d"], 2);

方法四:

 1 function chunk(arr, size) {
 2   // Break it up
 3   var newarr=[];
 4   
 5   for (var i=0;i<arr.length;i+=size){
 6     newarr.push(arr.slice(i,i+size));
 7   }
 8   return newarr;
 9 }
10 
11 chunk(["a", "b", "c", "d"], 2);

 

转载于:https://www.cnblogs.com/ttmj865/p/6052558.html

(1)普通用户端(全平台) 音乐播放核心体验: 个性化首页:基于 “听歌历史 + 收藏偏好” 展示 “推荐歌单(每日 30 首)、新歌速递、相似曲风推荐”,支持按 “场景(通勤 / 学习 / 运动)” 切换推荐维度。 播放页功能:支持 “无损音质切换、倍速播放(0.5x-2.0x)、定时关闭、歌词逐句滚动”,提供 “沉浸式全屏模式”(隐藏冗余控件,突出歌词与专辑封面)。 多端同步:自动同步 “播放进度、收藏列表、歌单” 至所有登录设备(如手机暂停后,电脑端打开可继续播放)。 音乐发现与管理: 智能搜索:支持 “歌曲名 / 歌手 / 歌词片段” 搜索,提供 “模糊匹配(如输入‘晴天’联想‘周杰伦 - 晴天’)、热门搜索词推荐”,结果按 “热度 / 匹配度” 排序。 歌单管理:创建 “公开 / 私有 / 加密” 歌单,支持 “批量添加歌曲、拖拽排序、一键分享到社交平台”,系统自动生成 “歌单封面(基于歌曲风格配色)”。 音乐分类浏览:按 “曲风(流行 / 摇滚 / 古典)、语言(国语 / 英语 / 日语)、年代(80 后经典 / 2023 新歌)” 分层浏览,每个分类页展示 “TOP50 榜单”。 社交互动功能: 动态广场:查看 “关注的用户 / 音乐人发布的动态(如‘分享新歌感受’)、好友正在听的歌曲”,支持 “点赞 / 评论 / 转发”,可直接点击动态中的歌曲播放。 听歌排行:个人页展示 “本周听歌 TOP10、累计听歌时长”,平台定期生成 “全球 / 好友榜”(如 “好友中你本周听歌时长排名第 3”)。 音乐圈:加入 “特定曲风圈子(如‘古典音乐爱好者’)”,参与 “话题讨论(如‘你心中最经典的钢琴曲’)、线上歌单共创”。 (2)音乐人端(创作者中心) 作品管理: 音乐上传:支持 “无损音频(FLAC/WAV)+ 歌词文件(LRC)+ 专辑封面” 上传,填写 “歌曲信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值