У меня есть Array a = [0,1,2,3,4,5,6]
, и я хочу Подмножество с 3-х элементов, так что результат становится этим:Список последовательное подмножество элементов в Javascript
[0,1,2],[1,2,3],[2,3,4],[3,4,5],[4,5,6]
Я попытался с помощью этого сценария, что я нашел:
Array.prototype.combinate = function(iItems, aIn) {
if (!aIn) {
var aIn = new Array();
this.combinate.aResult = new Array();
}
for(var i = 0; i < this.length; i++) {
var a = aIn.concat(this[i]);
var aRest = this.concat(); // Concat with nothing to create copy
aRest.splice(0, i + 1);
if(iItems && iItems - 1 <= aRest.length) {
aRest.combinate(iItems - 1, a);
if(iItems == 1) this.combinate.aResult.push(a);
}
}
return this.combinate.aResult;
}
Но это дает все возможные подмножества (и становится легко медленным, когда список становится большим, а подмножество поиска мало). Мне нужно только «последовательное» подмножество, как показано выше, так что [1,2,3]
в порядке - но не [1,2,4]
..
Любые яркие люди, которые знают, как это сделать в JavaScript ..?
Итерируйте массив, увеличивайте индекс и захватывайте 3 элемента в последовательном порядке, не выходя за пределы. –
Просто повторите до 'a.length - 3' и нажмите' a.slice (i, i + 3) 'на результат на каждой итерации. – lxe