Soy nuevo en Node.js y quiero acceder a un conjunto particular de información desde un objeto que se ve así:

userData: [
  {
    value: false,
    id: 1,
    title: 'Hello World',
    date: '17 February 2018 - 06:27:51 PM',
    status: 'Processing'
  },
  {
    value: false,
    id: 2,
    title: 'Hello People',
    date: '17 February 2018 - 06:27:48 PM',
    status: 'Active'
  },
  {
    value: false,
    id: 3,
    title: 'Hello Canary',
    date: '17 February 2018 - 06:27:44 PM',
    status: 'Expired'
  }
]

Ahora quiero devolver una matriz que consta de solo "título"

Ejemplo: ['Hello World', 'Hello people', 'Hello Canary']

He intentado Object.values(obj) y Object.keys(yourObject).map(key => yourObject[key]) sin suerte. ¿Alguien puede ayudarme por favor?

Actualización: estoy usando ES6 y me gustaría optimizar mi código para el rendimiento

0
Dev Aggarwal 1 mar. 2018 a las 20:06

3 respuestas

La mejor respuesta

let titles = userData.map(x => x.title);

Cuando se utiliza Array.prototype.map con una matriz. Devuelve una matriz compuesta por el valor de retorno de la función que le pasa, llamada en cada elemento de la matriz. Entonces, el ejemplo anterior, cuando se usa en su matriz de objetos que contienen la propiedad .title, devolverá una nueva matriz que contiene los títulos de cada objeto en la matriz original.

4
Helam 1 mar. 2018 a las 17:16

Aquí hay un fragmento de trabajo

var userData = [{
    value: false,
    id: 1,
    title: 'Hello World',
    date: '17 February 2018 - 06:27:51 PM',
    status: 'Processing'
  },
  {
    value: false,
    id: 2,
    title: 'Hello People',
    date: '17 February 2018 - 06:27:48 PM',
    status: 'Active'
  },
  {
    value: false,
    id: 3,
    title: 'Hello Canary',
    date: '17 February 2018 - 06:27:44 PM',
    status: 'Expired'
  }
]

// Solution to your problem
let titles = userData.map(function(obj) {
  return obj.title;
});

console.log(titles);

Explicación:

  1. El mapa se ejecutará en cada objeto de la matriz de datos del usuario
  2. El método de mapa toma una función que devuelve los valores que queremos en nuestra matriz final, que es, en este caso, 'título'
  3. Entonces, después de que Map termine de iterar a través de toda la lista, los títulos de cada objeto en la matriz de Datos de usuario se recopilarán en títulos variables
1
Abhijit Kar ツ 1 mar. 2018 a las 17:16
Try this:
var userData =  [
        {
          value: false,
          id: 1,
          title: 'Hello World',
          date: '17 February 2018 - 06:27:51 PM',
          status: 'Processing'
        },
        {
          value: false,
          id: 2,
          title: 'Hello People',
          date: '17 February 2018 - 06:27:48 PM',
          status: 'Active'
        },
        {
          value: false,
          id: 3,
          title: 'Hello Canary',
          date: '17 February 2018 - 06:27:44 PM',
          status: 'Expired'
        }
      ];
      var newArray=[];
userData.forEach(function(entry) {
    newArray.push(entry.title);
});
alert(newArray);
0
Bimlendu Kumar 1 mar. 2018 a las 17:20