3

I have array like this

   var arr = [
                [ {"c": 1},{"d": 2} ],
                [ {"c": 2},{"d": 3} ]
             ]

I want to change into (by javascript only)

var newArr  = [{"c": 1},{"d": 2},{"c": 2},{"d": 3}]

I have tried this by map but not getting expected output .

Ashutosh Jha
  • 15,451
  • 11
  • 52
  • 85

3 Answers3

10

You can use reduce() and spread syntax.

 var arr = [
  [ {"c": 1},{"d": 2} ],
  [ {"c": 2},{"d": 3} ]
]

var result = arr.reduce((r, e) => (r.push(...e), r), [])
console.log(result)
Nenad Vracar
  • 118,580
  • 15
  • 151
  • 176
2

You could use Array#reduce with Array#concat.

var arr = [[{ c: 1 }, { d: 2 }], [{ c: 2 }, { d: 3 }]],
    result = arr.reduce((r, a) => r.concat(a), []);

console.log(result)

ES5

var arr = [[{ c: 1 }, { d: 2 }], [{ c: 2 }, { d: 3 }]],
    result = arr.reduce(function (r, a) { return r.concat(a); }, []);

console.log(result)
Nina Scholz
  • 376,160
  • 25
  • 347
  • 392
1

In plain JavaScript you can do this using Array.portotype.forEach.

var arr = [
                [ {"c": 1},{"d": 2} ],
                [ {"c": 2},{"d": 3} ]
             ];
             
var newArray = [];

arr.forEach(function(e){
 e.forEach(function(e1){
  newArray.push(e1);
 });
})

console.log(newArray);

Use this..

Atul Sharma
  • 9,397
  • 10
  • 38
  • 65