Как мне отфильтровать JSON по ключу, чтобы у меня был список ключей только одного типа для всех объектов - PullRequest
2 голосов
/ 28 октября 2019

[
  {
    "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"
  },
  ...
]

Это мой образец объекта. Я получаю это из запроса приложения url fetch. Как я могу отфильтровать это, чтобы я мог опубликовать список только одного типа значения.

Например: если я хочу отфильтровать его по ключевому идентификатору, я хочу получить список, который выглядит примерно так: 100,101,... и так далее.

Спасибо

Ответы [ 4 ]

5 голосов
/ 28 октября 2019

Вместо Array.prototype.filter() следует использовать Array.prototype.map ()

Код:

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)
0 голосов
/ 28 октября 2019

Для Функции стрелок (=>) не будут работать.

Использование:

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]

    }
0 голосов
/ 28 октября 2019
const extractFieldArray = (data, key) => data.map(d => d[key]);

// data - это ваш объект, key - это то, что вы хотите извлечь, например id

0 голосов
/ 28 октября 2019

В качестве альтернативы вы можете использовать Array.reduce, хотя я не уверен, что есть какие-либо преимущества по сравнению с методом карты Йосвела:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...