How can I split my array into multiple smaller arrays?
Clash Royale CLAN TAG#URR8PPP
up vote
7
down vote
favorite
My target is to split the given array into smaller arrays using JavaScript. For example [1, 2, 3, 4]
should be split to [1] [1, 2] [1, 2, 3] [1, 2, 3, 4] [2] [2, 3] [2, 3, 4] [3] [3, 4] [4]
.
I am using this code:
let arr = [1, 2, 3, 4];
for (let i = 1; i <= arr.length; i++)
let a = ;
for (let j = 0; j < arr.length; j++)
a.push(arr[j]);
if (a.length === i)
break;
console.log(a);
And I get the following result: [1] [1, 2] [1, 2, 3] [1, 2, 3, 4] undefined
What am I missing/doing wrong?
javascript arrays
 |Â
show 1 more comment
up vote
7
down vote
favorite
My target is to split the given array into smaller arrays using JavaScript. For example [1, 2, 3, 4]
should be split to [1] [1, 2] [1, 2, 3] [1, 2, 3, 4] [2] [2, 3] [2, 3, 4] [3] [3, 4] [4]
.
I am using this code:
let arr = [1, 2, 3, 4];
for (let i = 1; i <= arr.length; i++)
let a = ;
for (let j = 0; j < arr.length; j++)
a.push(arr[j]);
if (a.length === i)
break;
console.log(a);
And I get the following result: [1] [1, 2] [1, 2, 3] [1, 2, 3, 4] undefined
What am I missing/doing wrong?
javascript arrays
I think you should set j=i in begin loop
– Alexandr Kudryashov
59 mins ago
@AlexandrKudryashov I have tried. It is not correct
– TeodorKolev
57 mins ago
set j=i and remove the if condition in the nested loop
– rock star
56 mins ago
init i with 0 and remove the = symbol in the corresponding condition
– rock star
56 mins ago
1
@rockstar nope, it is not correct
– TeodorKolev
55 mins ago
 |Â
show 1 more comment
up vote
7
down vote
favorite
up vote
7
down vote
favorite
My target is to split the given array into smaller arrays using JavaScript. For example [1, 2, 3, 4]
should be split to [1] [1, 2] [1, 2, 3] [1, 2, 3, 4] [2] [2, 3] [2, 3, 4] [3] [3, 4] [4]
.
I am using this code:
let arr = [1, 2, 3, 4];
for (let i = 1; i <= arr.length; i++)
let a = ;
for (let j = 0; j < arr.length; j++)
a.push(arr[j]);
if (a.length === i)
break;
console.log(a);
And I get the following result: [1] [1, 2] [1, 2, 3] [1, 2, 3, 4] undefined
What am I missing/doing wrong?
javascript arrays
My target is to split the given array into smaller arrays using JavaScript. For example [1, 2, 3, 4]
should be split to [1] [1, 2] [1, 2, 3] [1, 2, 3, 4] [2] [2, 3] [2, 3, 4] [3] [3, 4] [4]
.
I am using this code:
let arr = [1, 2, 3, 4];
for (let i = 1; i <= arr.length; i++)
let a = ;
for (let j = 0; j < arr.length; j++)
a.push(arr[j]);
if (a.length === i)
break;
console.log(a);
And I get the following result: [1] [1, 2] [1, 2, 3] [1, 2, 3, 4] undefined
What am I missing/doing wrong?
let arr = [1, 2, 3, 4];
for (let i = 1; i <= arr.length; i++)
let a = ;
for (let j = 0; j < arr.length; j++)
a.push(arr[j]);
if (a.length === i)
break;
console.log(a);
let arr = [1, 2, 3, 4];
for (let i = 1; i <= arr.length; i++)
let a = ;
for (let j = 0; j < arr.length; j++)
a.push(arr[j]);
if (a.length === i)
break;
console.log(a);
javascript arrays
javascript arrays
edited 52 mins ago


Jenny O'Reilly
10.1k73651
10.1k73651
asked 1 hour ago


TeodorKolev
95752043
95752043
I think you should set j=i in begin loop
– Alexandr Kudryashov
59 mins ago
@AlexandrKudryashov I have tried. It is not correct
– TeodorKolev
57 mins ago
set j=i and remove the if condition in the nested loop
– rock star
56 mins ago
init i with 0 and remove the = symbol in the corresponding condition
– rock star
56 mins ago
1
@rockstar nope, it is not correct
– TeodorKolev
55 mins ago
 |Â
show 1 more comment
I think you should set j=i in begin loop
– Alexandr Kudryashov
59 mins ago
@AlexandrKudryashov I have tried. It is not correct
– TeodorKolev
57 mins ago
set j=i and remove the if condition in the nested loop
– rock star
56 mins ago
init i with 0 and remove the = symbol in the corresponding condition
– rock star
56 mins ago
1
@rockstar nope, it is not correct
– TeodorKolev
55 mins ago
I think you should set j=i in begin loop
– Alexandr Kudryashov
59 mins ago
I think you should set j=i in begin loop
– Alexandr Kudryashov
59 mins ago
@AlexandrKudryashov I have tried. It is not correct
– TeodorKolev
57 mins ago
@AlexandrKudryashov I have tried. It is not correct
– TeodorKolev
57 mins ago
set j=i and remove the if condition in the nested loop
– rock star
56 mins ago
set j=i and remove the if condition in the nested loop
– rock star
56 mins ago
init i with 0 and remove the = symbol in the corresponding condition
– rock star
56 mins ago
init i with 0 and remove the = symbol in the corresponding condition
– rock star
56 mins ago
1
1
@rockstar nope, it is not correct
– TeodorKolev
55 mins ago
@rockstar nope, it is not correct
– TeodorKolev
55 mins ago
 |Â
show 1 more comment
5 Answers
5
active
oldest
votes
up vote
3
down vote
accepted
You have two issues in your code:
- You need to have loop to initialize with the value of
i
for the inner loop so that it consider the next index for new iteration ofi
- You need to remove that
break
on the length which you have in inner loop.
let arr = [1, 2, 3, 4];
for (let i = 0; i <= arr.length; i++)
let a = ;
for (let j = i; j < arr.length; j++)
a.push(arr[j]);
console.log(a);
add a comment |Â
up vote
7
down vote
For the inner array, you could just start with the index of the outer array.
var array = [1, 2, 3, 4],
temp,
i, j, l = array.length,
result = ;
for (i = 0; i < l; i++)
for (j = i; j < l; j++)
result.push(array.slice(i, j + 1));
console.log(result.map(a => a.join(' ')));
.as-console-wrapper max-height: 100% !important; top: 0;
1
I was expecting answer from you :)
– Ankit Agarwal
54 mins ago
This do one big array. Target is to create small arrays
– TeodorKolev
54 mins ago
what do you want with small arrays? instead of pushing, you could display the sub array.
– Nina Scholz
50 mins ago
add a comment |Â
up vote
2
down vote
Try this
let arr = [1, 2, 3, 4];
for (let i = 0; i <= arr.length; i++)
let a = ;
var tmp=i;
for (let j = tmp; j < arr.length; j++)
a.push(arr[j]);
console.log(a);
Why do you need thetmp
variable?
– Jenny O'Reilly
50 mins ago
you can do it without tmp variable=)
– Alexandr Kudryashov
49 mins ago
add a comment |Â
up vote
0
down vote
i have prepare stackblitz for this case.
let source = [1,2,3,4];
const output = ;
const arrayMultiplier = (source) =>
const eachValueArray = ;
source.forEach((item, index) =>
// Will push new array who will be sliced source array.
eachValueArray.push(source.slice(0, source.length - index));
);
//We reverse array to have right order.
return eachValueArray.reverse();
;
for(let i = 0; i <= source.length; i++)
output.push(...arrayMultiplier(source));
source.shift(); // Will recraft source array by removing first index.
//Don't forget last item.
output.push(source);
console.log(output);
Is not the most shorten solution but do the job
add a comment |Â
up vote
0
down vote
Use two iteration
- get slice array based on loop index.
- use sliced array and combine array element.
var arr = [1, 2, 3, 4];
let newArra =;
arr.map((x,i)=>
let remainArr = arr.slice(i);
return remainArr.forEach((y, r) => newArra.push(arr.slice(i).slice(0, r+1)))
)
newArra.forEach(x=> console.log(x))
add a comment |Â
5 Answers
5
active
oldest
votes
5 Answers
5
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
3
down vote
accepted
You have two issues in your code:
- You need to have loop to initialize with the value of
i
for the inner loop so that it consider the next index for new iteration ofi
- You need to remove that
break
on the length which you have in inner loop.
let arr = [1, 2, 3, 4];
for (let i = 0; i <= arr.length; i++)
let a = ;
for (let j = i; j < arr.length; j++)
a.push(arr[j]);
console.log(a);
add a comment |Â
up vote
3
down vote
accepted
You have two issues in your code:
- You need to have loop to initialize with the value of
i
for the inner loop so that it consider the next index for new iteration ofi
- You need to remove that
break
on the length which you have in inner loop.
let arr = [1, 2, 3, 4];
for (let i = 0; i <= arr.length; i++)
let a = ;
for (let j = i; j < arr.length; j++)
a.push(arr[j]);
console.log(a);
add a comment |Â
up vote
3
down vote
accepted
up vote
3
down vote
accepted
You have two issues in your code:
- You need to have loop to initialize with the value of
i
for the inner loop so that it consider the next index for new iteration ofi
- You need to remove that
break
on the length which you have in inner loop.
let arr = [1, 2, 3, 4];
for (let i = 0; i <= arr.length; i++)
let a = ;
for (let j = i; j < arr.length; j++)
a.push(arr[j]);
console.log(a);
You have two issues in your code:
- You need to have loop to initialize with the value of
i
for the inner loop so that it consider the next index for new iteration ofi
- You need to remove that
break
on the length which you have in inner loop.
let arr = [1, 2, 3, 4];
for (let i = 0; i <= arr.length; i++)
let a = ;
for (let j = i; j < arr.length; j++)
a.push(arr[j]);
console.log(a);
let arr = [1, 2, 3, 4];
for (let i = 0; i <= arr.length; i++)
let a = ;
for (let j = i; j < arr.length; j++)
a.push(arr[j]);
console.log(a);
let arr = [1, 2, 3, 4];
for (let i = 0; i <= arr.length; i++)
let a = ;
for (let j = i; j < arr.length; j++)
a.push(arr[j]);
console.log(a);
answered 50 mins ago


Ankit Agarwal
20.8k31840
20.8k31840
add a comment |Â
add a comment |Â
up vote
7
down vote
For the inner array, you could just start with the index of the outer array.
var array = [1, 2, 3, 4],
temp,
i, j, l = array.length,
result = ;
for (i = 0; i < l; i++)
for (j = i; j < l; j++)
result.push(array.slice(i, j + 1));
console.log(result.map(a => a.join(' ')));
.as-console-wrapper max-height: 100% !important; top: 0;
1
I was expecting answer from you :)
– Ankit Agarwal
54 mins ago
This do one big array. Target is to create small arrays
– TeodorKolev
54 mins ago
what do you want with small arrays? instead of pushing, you could display the sub array.
– Nina Scholz
50 mins ago
add a comment |Â
up vote
7
down vote
For the inner array, you could just start with the index of the outer array.
var array = [1, 2, 3, 4],
temp,
i, j, l = array.length,
result = ;
for (i = 0; i < l; i++)
for (j = i; j < l; j++)
result.push(array.slice(i, j + 1));
console.log(result.map(a => a.join(' ')));
.as-console-wrapper max-height: 100% !important; top: 0;
1
I was expecting answer from you :)
– Ankit Agarwal
54 mins ago
This do one big array. Target is to create small arrays
– TeodorKolev
54 mins ago
what do you want with small arrays? instead of pushing, you could display the sub array.
– Nina Scholz
50 mins ago
add a comment |Â
up vote
7
down vote
up vote
7
down vote
For the inner array, you could just start with the index of the outer array.
var array = [1, 2, 3, 4],
temp,
i, j, l = array.length,
result = ;
for (i = 0; i < l; i++)
for (j = i; j < l; j++)
result.push(array.slice(i, j + 1));
console.log(result.map(a => a.join(' ')));
.as-console-wrapper max-height: 100% !important; top: 0;
For the inner array, you could just start with the index of the outer array.
var array = [1, 2, 3, 4],
temp,
i, j, l = array.length,
result = ;
for (i = 0; i < l; i++)
for (j = i; j < l; j++)
result.push(array.slice(i, j + 1));
console.log(result.map(a => a.join(' ')));
.as-console-wrapper max-height: 100% !important; top: 0;
var array = [1, 2, 3, 4],
temp,
i, j, l = array.length,
result = ;
for (i = 0; i < l; i++)
for (j = i; j < l; j++)
result.push(array.slice(i, j + 1));
console.log(result.map(a => a.join(' ')));
.as-console-wrapper max-height: 100% !important; top: 0;
var array = [1, 2, 3, 4],
temp,
i, j, l = array.length,
result = ;
for (i = 0; i < l; i++)
for (j = i; j < l; j++)
result.push(array.slice(i, j + 1));
console.log(result.map(a => a.join(' ')));
.as-console-wrapper max-height: 100% !important; top: 0;
answered 56 mins ago


Nina Scholz
158k1277136
158k1277136
1
I was expecting answer from you :)
– Ankit Agarwal
54 mins ago
This do one big array. Target is to create small arrays
– TeodorKolev
54 mins ago
what do you want with small arrays? instead of pushing, you could display the sub array.
– Nina Scholz
50 mins ago
add a comment |Â
1
I was expecting answer from you :)
– Ankit Agarwal
54 mins ago
This do one big array. Target is to create small arrays
– TeodorKolev
54 mins ago
what do you want with small arrays? instead of pushing, you could display the sub array.
– Nina Scholz
50 mins ago
1
1
I was expecting answer from you :)
– Ankit Agarwal
54 mins ago
I was expecting answer from you :)
– Ankit Agarwal
54 mins ago
This do one big array. Target is to create small arrays
– TeodorKolev
54 mins ago
This do one big array. Target is to create small arrays
– TeodorKolev
54 mins ago
what do you want with small arrays? instead of pushing, you could display the sub array.
– Nina Scholz
50 mins ago
what do you want with small arrays? instead of pushing, you could display the sub array.
– Nina Scholz
50 mins ago
add a comment |Â
up vote
2
down vote
Try this
let arr = [1, 2, 3, 4];
for (let i = 0; i <= arr.length; i++)
let a = ;
var tmp=i;
for (let j = tmp; j < arr.length; j++)
a.push(arr[j]);
console.log(a);
Why do you need thetmp
variable?
– Jenny O'Reilly
50 mins ago
you can do it without tmp variable=)
– Alexandr Kudryashov
49 mins ago
add a comment |Â
up vote
2
down vote
Try this
let arr = [1, 2, 3, 4];
for (let i = 0; i <= arr.length; i++)
let a = ;
var tmp=i;
for (let j = tmp; j < arr.length; j++)
a.push(arr[j]);
console.log(a);
Why do you need thetmp
variable?
– Jenny O'Reilly
50 mins ago
you can do it without tmp variable=)
– Alexandr Kudryashov
49 mins ago
add a comment |Â
up vote
2
down vote
up vote
2
down vote
Try this
let arr = [1, 2, 3, 4];
for (let i = 0; i <= arr.length; i++)
let a = ;
var tmp=i;
for (let j = tmp; j < arr.length; j++)
a.push(arr[j]);
console.log(a);
Try this
let arr = [1, 2, 3, 4];
for (let i = 0; i <= arr.length; i++)
let a = ;
var tmp=i;
for (let j = tmp; j < arr.length; j++)
a.push(arr[j]);
console.log(a);
let arr = [1, 2, 3, 4];
for (let i = 0; i <= arr.length; i++)
let a = ;
var tmp=i;
for (let j = tmp; j < arr.length; j++)
a.push(arr[j]);
console.log(a);
let arr = [1, 2, 3, 4];
for (let i = 0; i <= arr.length; i++)
let a = ;
var tmp=i;
for (let j = tmp; j < arr.length; j++)
a.push(arr[j]);
console.log(a);
edited 52 mins ago
Sudhir Ojha
1,024313
1,024313
answered 53 mins ago


Alexandr Kudryashov
559213
559213
Why do you need thetmp
variable?
– Jenny O'Reilly
50 mins ago
you can do it without tmp variable=)
– Alexandr Kudryashov
49 mins ago
add a comment |Â
Why do you need thetmp
variable?
– Jenny O'Reilly
50 mins ago
you can do it without tmp variable=)
– Alexandr Kudryashov
49 mins ago
Why do you need the
tmp
variable?– Jenny O'Reilly
50 mins ago
Why do you need the
tmp
variable?– Jenny O'Reilly
50 mins ago
you can do it without tmp variable=)
– Alexandr Kudryashov
49 mins ago
you can do it without tmp variable=)
– Alexandr Kudryashov
49 mins ago
add a comment |Â
up vote
0
down vote
i have prepare stackblitz for this case.
let source = [1,2,3,4];
const output = ;
const arrayMultiplier = (source) =>
const eachValueArray = ;
source.forEach((item, index) =>
// Will push new array who will be sliced source array.
eachValueArray.push(source.slice(0, source.length - index));
);
//We reverse array to have right order.
return eachValueArray.reverse();
;
for(let i = 0; i <= source.length; i++)
output.push(...arrayMultiplier(source));
source.shift(); // Will recraft source array by removing first index.
//Don't forget last item.
output.push(source);
console.log(output);
Is not the most shorten solution but do the job
add a comment |Â
up vote
0
down vote
i have prepare stackblitz for this case.
let source = [1,2,3,4];
const output = ;
const arrayMultiplier = (source) =>
const eachValueArray = ;
source.forEach((item, index) =>
// Will push new array who will be sliced source array.
eachValueArray.push(source.slice(0, source.length - index));
);
//We reverse array to have right order.
return eachValueArray.reverse();
;
for(let i = 0; i <= source.length; i++)
output.push(...arrayMultiplier(source));
source.shift(); // Will recraft source array by removing first index.
//Don't forget last item.
output.push(source);
console.log(output);
Is not the most shorten solution but do the job
add a comment |Â
up vote
0
down vote
up vote
0
down vote
i have prepare stackblitz for this case.
let source = [1,2,3,4];
const output = ;
const arrayMultiplier = (source) =>
const eachValueArray = ;
source.forEach((item, index) =>
// Will push new array who will be sliced source array.
eachValueArray.push(source.slice(0, source.length - index));
);
//We reverse array to have right order.
return eachValueArray.reverse();
;
for(let i = 0; i <= source.length; i++)
output.push(...arrayMultiplier(source));
source.shift(); // Will recraft source array by removing first index.
//Don't forget last item.
output.push(source);
console.log(output);
Is not the most shorten solution but do the job
i have prepare stackblitz for this case.
let source = [1,2,3,4];
const output = ;
const arrayMultiplier = (source) =>
const eachValueArray = ;
source.forEach((item, index) =>
// Will push new array who will be sliced source array.
eachValueArray.push(source.slice(0, source.length - index));
);
//We reverse array to have right order.
return eachValueArray.reverse();
;
for(let i = 0; i <= source.length; i++)
output.push(...arrayMultiplier(source));
source.shift(); // Will recraft source array by removing first index.
//Don't forget last item.
output.push(source);
console.log(output);
Is not the most shorten solution but do the job
answered 37 mins ago
Yanis-git
1,3151217
1,3151217
add a comment |Â
add a comment |Â
up vote
0
down vote
Use two iteration
- get slice array based on loop index.
- use sliced array and combine array element.
var arr = [1, 2, 3, 4];
let newArra =;
arr.map((x,i)=>
let remainArr = arr.slice(i);
return remainArr.forEach((y, r) => newArra.push(arr.slice(i).slice(0, r+1)))
)
newArra.forEach(x=> console.log(x))
add a comment |Â
up vote
0
down vote
Use two iteration
- get slice array based on loop index.
- use sliced array and combine array element.
var arr = [1, 2, 3, 4];
let newArra =;
arr.map((x,i)=>
let remainArr = arr.slice(i);
return remainArr.forEach((y, r) => newArra.push(arr.slice(i).slice(0, r+1)))
)
newArra.forEach(x=> console.log(x))
add a comment |Â
up vote
0
down vote
up vote
0
down vote
Use two iteration
- get slice array based on loop index.
- use sliced array and combine array element.
var arr = [1, 2, 3, 4];
let newArra =;
arr.map((x,i)=>
let remainArr = arr.slice(i);
return remainArr.forEach((y, r) => newArra.push(arr.slice(i).slice(0, r+1)))
)
newArra.forEach(x=> console.log(x))
Use two iteration
- get slice array based on loop index.
- use sliced array and combine array element.
var arr = [1, 2, 3, 4];
let newArra =;
arr.map((x,i)=>
let remainArr = arr.slice(i);
return remainArr.forEach((y, r) => newArra.push(arr.slice(i).slice(0, r+1)))
)
newArra.forEach(x=> console.log(x))
var arr = [1, 2, 3, 4];
let newArra =;
arr.map((x,i)=>
let remainArr = arr.slice(i);
return remainArr.forEach((y, r) => newArra.push(arr.slice(i).slice(0, r+1)))
)
newArra.forEach(x=> console.log(x))
var arr = [1, 2, 3, 4];
let newArra =;
arr.map((x,i)=>
let remainArr = arr.slice(i);
return remainArr.forEach((y, r) => newArra.push(arr.slice(i).slice(0, r+1)))
)
newArra.forEach(x=> console.log(x))
edited 31 mins ago
answered 43 mins ago
Anoop
18.8k94468
18.8k94468
add a comment |Â
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f52363370%2fhow-can-i-split-my-array-into-multiple-smaller-arrays%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
I think you should set j=i in begin loop
– Alexandr Kudryashov
59 mins ago
@AlexandrKudryashov I have tried. It is not correct
– TeodorKolev
57 mins ago
set j=i and remove the if condition in the nested loop
– rock star
56 mins ago
init i with 0 and remove the = symbol in the corresponding condition
– rock star
56 mins ago
1
@rockstar nope, it is not correct
– TeodorKolev
55 mins ago