如何在自定义模式中切片数组?

我有这个数组:

var x = [1,2,3,4,5,"a","b","c",9,10]; 

我想将这个数组切分成这种模式:

 var x = [[1,2,3],[2,3,4],[3,4,5],[4,5,"a"],[5,"a","b"],["a","b","c"],["b","c",9],["c",9,10]]; 

我使用了下面的代码,并能够得到[[1,2,3],[4,5,"a"],["b","c",9],[10,11,12]] 。 但是这对我不起作用。 我需要得到上面的模式。

 var stream = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; var x = ["a", "b", "c"]; var ad_time = 6; var result = []; var ad_index = stream.indexOf(ad_time); if (~ad_index) { for (var i = 0; i < x.length; i++) { stream[ad_index + i] = x[i]; } } while (stream.length > 0) { var chunk = stream.splice(0, 3); result.push(chunk); } console.log(JSON.stringify(result)); 

非常感谢!

你可以用一个简单的for循环来实现它:

 var x = [1,2,3,4,5,"a","b","c",9,10]; var result = []; for (var i = 0, il = x.length - 2; i < il; i++) { result.push([x[i], x[i + 1], x[i + 2]]); } console.log(result); 

这段代码应该这样做:

 var x = [1,2,3,4,5,"a","b","c",9,10]; var new_array = []; for (var i = 0; i < x.length - 2; i++) { new_array.push(x.slice(i, i + 3)); }