有个需求是这样的:
项目是一个电影播放器,主页有一个电影推荐列表,但是需要每隔八部电影,中间插一条
广告,但是因为后台返回的数据格式,需要自己去加
1.首先先模拟一条数组,里面有多个对象
2.接下来我是循环这个数组//这个是获取到的数组,我这里写的空对象
let arr = [{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, ];
//这个是我等会要用到的空数组
let res = [];
//这里的i++,换成了i=i+8,循环开始
for (let i = 0; i < arr.length; i = i + 8) {
//当判断i+8是否小于总数组的长度时,成立了就从(i,i+8)开始截取保存到res数组中,其实就是截取数组的前8个对象
if (i + 8 < arr.length) {
res.push(arr.slice(i, i + 8));
} else {
//这里长度不足8的对象也保存在res数组中,截取i的长度
res.push(arr.slice(i));
}
}
res.forEach(function(item) {
//八条对象的数组在后面添加你要添加的内容
return item.length === 8 ? item.push({
name: '张三'
}) : item;
})
//这里定义一个空数组,并用apply指向这个空数组,concat将多个数组合并成一个数组
let result = [].concat.apply([], res);