Tengo una matriz como esta:

var array = ['test1', 'test2', 'test3', 'test4']

Me gustaría hacer un nuevo objeto a partir de esta matriz, y deberían tener las mismas claves. El resultado deseado debería ser así:

var objectFromArray = [
{ responsibilityName: "test1" },
{ responsibilityName: "test2" },
{ responsibilityName: "test3" },
{ responsibilityName: "test4"}
]

¿Cómo es esto posible en js?

0
Nikasv 31 oct. 2017 a las 09:49

4 respuestas

La mejor respuesta

Ajustado a su comentario: puede usar reduce y map para aplanar las matrices dentro de la matriz de objetos.

[ Editar según tu comentario]

const arr = [
  { responsabilityName: ['test1', 'test2', 'test3', 'test4'],
    somethingElse: [1, 2, 3, 4] } ];

const arrMapped = arr
  .reduce( (mappedArr, obj) => 
      Object.keys(obj)
        .map( key => obj[key].map( prop => ({ [key]: prop }) ) )
        .reduce( (p, n) => p.concat(n), [] ), 
   [] );

console.log(arrMapped);
0
KooiInc 31 oct. 2017 a las 11:16

Iterar sobre la matriz, crear objetos en el otro. Tan sencillo como eso.

var array = ['test1', 'test2', 'test3', 'test4']
var objectFromArray = []
array.forEach((v)=>{objectFromArray.push({"responsibilityname":v})})
0
Alexey Soshin 31 oct. 2017 a las 06:52

Use array.map y asigne el valor al objeto

DEMO

var array = ['test1', 'test2', 'test3', 'test4'];

var result = array.map(function(el) {
    var obj = {};
    obj['responsibilityname'] = el;
   
  return obj;
})

console.log(array);
console.log(result);
0
Sajeetharan 31 oct. 2017 a las 06:52

Pase sobre la matriz y devuelva un nuevo objeto usando map o forEach etc.

var array = ['test1', 'test2', 'test3', 'test4']
var arr = array.map(value => {
    return {responsibilityName: value};
    
})
console.log(arr);
0
Shubham Khatri 31 oct. 2017 a las 07:27