我有问题,我不明白为什么arr.slice在第一个值为0时不起作用,返回的数组为空:
function chunkArrayInGroups(arr, size) {
var newArr = [];
for (var i = 0; arr[i]; i += size) {
newArr.push(arr.slice(i, i + size));
}
return newArr;
}
console.log(chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6], 3));
答案 0 :(得分:5)
您最终使用条件指向循环,该条件的计算结果为false
。
arr[i] -> arr[0] -> 0 -> false -> end for loop
使用数组的长度作为检查
for (var i = 0; i < arr.length; i += size) {
// ^^^^^^^^^^^^^^
function chunkArrayInGroups(arr, size) {
var newArr = [];
for (var i = 0; i < arr.length; i += size) {
newArr.push(arr.slice(i, i + size));
}
return newArr;
}
console.log(chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6], 3));
&#13;
答案 1 :(得分:0)
试试这个
function chunkArrayInGroups(arr, size) {
// Break it up.
var newArr = [];
for (var i = 0; typeof arr[i]!='undefined'; i += size) {
newArr.push(arr.slice(i, i + size));
}
return newArr;
}
chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6], 3)
答案 2 :(得分:0)
问题是arr[i]
而不是arr.slice
。
[0, 1, 2, 3, 4, 5 ,6]
的第一个元素为0且为假。
在i < arr.length
声明中使用for
等其他条件。
答案 3 :(得分:-1)
var titles = ['Value1', 'Value2', 'Value3'];
function TitleSwitch() {
var counter = 0,
fn = function () {
$(document).prop('title', titles[counter]);
counter++;
counter %= titles.length;
};
fn();
return fn;
}
setInterval(TitleSwitch(), 5000);
// Here, you can modify your titles in an ajax call
,for (var i = 0; arr[i]; i += size)
为arr[0]
,表示0
,因此永远不会输入循环