【问题标题】:How do i filter JSON based on a key, so i only have a list of one type of key for all objects如何根据键过滤 JSON,所以我只有所有对象的一种键的列表
【发布时间】:2019-10-28 03:49:34
【问题描述】:

[
  {
    "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 app 请求中得到这个。 我如何过滤这个,以便我可以发布一个只有一种类型的值的列表。

例如: 如果我想为 Key Id 过滤它,我想得到一个类似的列表:100,101,... 等等。

谢谢

【问题讨论】:

  • 这是 Java 问题还是 JavaScript 问题?你知道,这些是非常不同的语言。
  • java 脚本。 Java 用于标记。

标签: javascript arrays json google-apps-script google-sheets


【解决方案1】:

你应该使用Array.prototype.map()而不是Array.prototype.filter()

代码:

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)

【讨论】:

    【解决方案2】:

    对于,箭头函数 (=>) 将不起作用。

    用途:

    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]
    
        }
    

    【讨论】:

      【解决方案3】:

      您也可以使用 Array.reduce,尽管我不确定 Yosvel 的 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":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)

      【讨论】:

      【解决方案4】:
      const extractFieldArray = (data, key) => data.map(d => d[key]);
      

      //data 是你的对象,key 是你要提取的对象,比如id

      【讨论】:

        猜你喜欢
        • 2020-01-06
        • 1970-01-01
        • 2020-11-17
        • 1970-01-01
        • 2017-06-26
        • 2017-07-17
        • 2017-07-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多