[
  {
    "id":100,
    "account_id":8,
    "name":"Out of Service",
    "default":false,
    "created_at":"2012-02-06T08:51:29.720-06:00",
    "updated_at":"2012-02-06T08:51:29.720-06:00"
  },
  ...
]

Este es mi objeto de muestra. Lo obtengo de una solicitud de aplicación de búsqueda de URL. ¿Cómo puedo filtrar esto para poder publicar una lista de un solo tipo de Valor?

Por ejemplo: si quiero filtrarlo por ID de clave, quiero obtener una lista que sea algo así como: 100,101, ... Así sucesivamente.

Gracias

2
Tejinder Singh 28 oct. 2019 a las 06:49

4 respuestas

La mejor respuesta

Para las funciones de flecha (=>) no funcionarán.

Uso:

function testIt()
{
  var sample = [
    {
      "id":100,
      "account_id":8,
      "name":"Out of Service",
      "default":false,
      "created_at":"2012-02-06T08:51:29.720-06:00",
      "updated_at":"2012-02-06T08:51:29.720-06:00"
    },
    {
      "id":101,
      "account_id":8,
      "name":"Out of Service",
      "default":false,
      "created_at":"2012-02-06T08:51:29.720-06:00",
      "updated_at":"2012-02-06T08:51:29.720-06:00"
    },
  ];  
    var result = sample.map(function(elt) { return elt.id; });
    Logger.log(result); //  [100.0, 101.0]

    }
1
Max Makhrov 28 oct. 2019 a las 14:56
const extractFieldArray = (data, key) => data.map(d => d[key]);

// data es tu objeto, key es lo que quieres extraer, como un id

0
TuringCreep 28 oct. 2019 a las 08:18

Alternativamente, podría usar Array.reduce, aunque no estoy seguro de que haya algún beneficio sobre el método de mapa de Yosvel:

const data = [
  {
    "id":100,
    "account_id":8,
    "name":"Out of Service",
    "default":false,
    "created_at":"2012-02-06T08:51:29.720-06:00",
    "updated_at":"2012-02-06T08:51:29.720-06:00"
  },
  {
    "id":102,
    "account_id":8,
    "name":"Out of Service",
    "default":false,
    "created_at":"2012-02-06T08:51:29.720-06:00",
    "updated_at":"2012-02-06T08:51:29.720-06:00"
  },
  {
    "id":105,
    "account_id":8,
    "name":"Out of Service",
    "default":false,
    "created_at":"2012-02-06T08:51:29.720-06:00",
    "updated_at":"2012-02-06T08:51:29.720-06:00"
  },
]

const res = data.reduce(
  (acc, val) => {
    return [...acc, val.id]
  },
  []
)
console.log(res)
0
Jon B 28 oct. 2019 a las 05:10

En lugar de Array.prototype.filter() debe usar Array.prototype.map ()

Código:

const data = [
  {
    "id":100,
    "account_id":8,
    "name":"Out of Service",
    "default":false,
    "created_at":"2012-02-06T08:51:29.720-06:00",
    "updated_at":"2012-02-06T08:51:29.720-06:00"
  },
  {
    "id":101,
    "account_id":8,
    "name":"Out of Service",
    "default":false,
    "created_at":"2012-02-06T08:51:29.720-06:00",
    "updated_at":"2012-02-06T08:51:29.720-06:00"
  },
]

const result = data.map(obj => obj.id)

console.log(result)
5
Yosvel Quintero 28 oct. 2019 a las 07:54