-1

I have data like this

var data = [[1, 2, 3, 4], [5, 6, 7, 8]];

I want to get each data from that array like 1, 2, 3, 4, 5, 6 ,7 ,8 using for looping but I can't get each data.

this is my code for get each data using looping

var each = [];
for (var i = 0; i < data.length; i++) {
            each.push(data[i]);
            for (var i = 0; i < each.length; i++) {
                console.log(each[i]);
            };
        };

in my thinking, I can get each of my array data like 1,2,3 etc

but the looping result is [1,2,3,4]. This is first data in my array

please anybody tell me the best way to get each data from that array

Arie Sastra
  • 183
  • 1
  • 2
  • 16

5 Answers5

1

You could use Array#reduce and Array#concat to get a flat array.

var data = [[1, 2, 3, 4], [5, 6, 7, 8]],
    each = data.reduce(function (r, a) { return r.concat(a); }, []);

console.log(each);
Nina Scholz
  • 376,160
  • 25
  • 347
  • 392
0

Do it like this:

data = [[1, 2, 3, 4], [5, 6, 7, 8]];
var joined = [].concat.apply([], data).join(",");
   console.log(joined);
Cyril Cherian
  • 32,177
  • 7
  • 46
  • 55
0

another option will be to use a concat with apply

var data = [[1, 2, 3, 4], [5, 6, 7, 8]];   
var flat = [].concat.apply([],data);
console.log(flat);
ismapro
  • 162
  • 9
0

The more appropriate way is to use Array#reduce but you can also make your code work with below changes:

var each = [];
 for (var i = 0; i < data.length; i++) { 
        each = each.concat(data[i]);           
        for (var j = 0; j < each.length; j++) {
            console.log(each[j]);
        }
 }
Dhananjaya Kuppu
  • 1,322
  • 9
  • 10
0

I guess the simplest way would be

var data = [[1, 2, 3, 4], [5, 6, 7, 8]],
       z = [].concat(...data); // [1,2,3,4,5,6,7,8];
Redu
  • 25,060
  • 6
  • 56
  • 76