Dominik Lev :
I am a JavaScript beginner and I am trying make two different arrays with values from one main array.
My main array looks like:
0: Array(3) [ 2011, 127072.7, 51584 ]
1: Array(3) [ 2012, 125920.3, 59974 ]
2: Array(3) [ 2013, 129305.4, 15468 ]
3: Array(3) [ 2014, 135364, 84554 ]
4: Array(3) [ 2015, 136757, 98754 ]
5: Array(3) [ 2016, 155653.5, 155548 ]
6: Array(3) [ 2017, 164130.5, 284848 ]
And i need create two arrays, first looking like:
0: Array(2) [ 2011, 127072.7]
1: Array(2) [ 2012, 125920.3]
2: Array(2) [ 2013, 129305.4]
3: Array(2) [ 2014, 135364]
4: Array(2) [ 2015, 136757]
5: Array(2) [ 2016, 155653.5]
6: Array(2) [ 2017, 164130.5]
(first and second value)
and second like:
0: Array(2) [ 2011, 51584]
1: Array(2) [ 2012, 59974]
2: Array(2) [ 2013, 15468]
3: Array(2) [ 2014, 84554]
4: Array(2) [ 2015, 98754]
5: Array(2) [ 2016, 155548]
6: Array(2) [ 2017, 284848]
(first and third value)
I trying splice, filter etc. but I don't know, how to start.
It is not necessary to write me an exact solution, but only steps how to do it.
Nina Scholz :
You could take a dynamic approach and get all items of the array after the key value for each new array.
var data = [[2011, 127072.7, 51584], [2012, 125920.3, 59974], [2013, 129305.4, 15468], [2014, 135364, 84554], [2015, 136757, 98754], [2016, 155653.5, 155548], [2017, 164130.5, 284848]],
[first, second] = data.reduce(
(r, [k, ...a]) => {
a.forEach((v, i) => r[i].push([k, v]));
return r;
},
Array.from({ length: Array.isArray(data[0]) ? data[0].length - 1 : 0 }, () => [])
);
console.log(first);
console.log(second);
.as-console-wrapper { max-height: 100% !important; top: 0; }