1

If a have an array in javascript like:

[[2,3,4],"data","payload",[name1,name2,name3]]

how should I get all the values as a single array like

Result array should be like this :

[2,3,4,"data","payload",name1,name2,name3]
Sumner Evans
  • 8,951
  • 5
  • 30
  • 47
Ayush Rawat
  • 65
  • 2
  • 9

4 Answers4

5

You can flatten it with .concat().

var data = [[2,3,4],"data","payload",["name1","name2","name3"]];

console.log([].concat(...data));

Any Array argument passed to .concat() will be flattened into the result.

This also uses the "spread syntax", which is only available in newer engines. Use .apply() for legacy support.

var data = [[2,3,4],"data","payload",["name1","name2","name3"]];

console.log(data.concat.apply([], data));
spanky
  • 2,768
  • 8
  • 9
3

Use reduce() for this.

const array = [[2,3,4],"data","payload",["name1","name2","name3"]]


const flattenedArray = array.reduce((a, b) => a.concat(b), [])

console.log(flattenedArray)

MDN reference:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

Christopher Messer
  • 2,040
  • 9
  • 13
2

You can use the concat():

var array = [
  [2, 3, 4],
  "data",
  "payload",
  ['name1', 'name2', 'name3'],
]

var newArr = [].concat.apply([], array);

console.log(newArr);
Sumner Evans
  • 8,951
  • 5
  • 30
  • 47
2

You could use concat() to concatenate all the items in your main array into one big array, which I understand is what you're after :

var my2dArray = [[2,3,4],"data","payload",[name1,name2,name3]];
var my1dArray = [];


for(var i = 0; i < my2dArray.length; i++)
{
    my1dArray = my1dArray.concat(my2dArray[i]);
}

console.log(my1dArray); // will be [2,3,4,"data","payload",name1,name2,name3]
zoubida13
  • 1,738
  • 12
  • 20