我有這個數組:如何在自定義模式中切片數組?
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));
非常感謝!
你是天才...謝謝!但是..我想丹尼爾的解決方案看起來更優雅? – scaryguy
@scaryguy是的,'Array.slice()'更優雅,但它比直接訪問慢得多。看到這個測試:http://jsperf.com/direct-access-vs-slice –
由於這種表現差異,我接受你的回答格戈。你可以添加關於性能的這個筆記給你的答案嗎?所有人都不會看到評論。謝謝! – scaryguy