【问题标题】:Filter json object based on key [duplicate]根据键过滤json对象[重复]
【发布时间】:2017-07-17 15:25:35
【问题描述】:

我的 json 对象看起来像这样

Object
  A:Object
  B:Object
  C:Object
  D Object
  E:Object
  F:Object
  __proto__:Object

我只想根据键从这个 json 对象中获取 D and E。新的 json 对象应该只包含D and E。如何做到这一点?

【问题讨论】:

  • 这个关于过滤单个 JSON 对象的问题但是在重复标签问题中是关于 JSON 数组的。需要删除重复项

标签: javascript json


【解决方案1】:

Object['D']Object['E'] 将让您直接访问相应的对象。

您可以使用...创建新对象。

var newObj = { D : Object['D'], E : Object['E']}

使用原始对象名称而不是Object 进行访问。

使用JSON.stringify(newObj);可以获取新的JSON。

【讨论】:

  • D 接地是一个错字。我现在变了。
【解决方案2】:

试试这个:

function copyObjectProps(source, keys) {
   let newObject = {}
   keys.forEach(function(key) {
     newObject[key] = source[key]
   })
   return newObject
}

并像这样使用它:

let filteredObject = copyObjectProps(yourObject, ['D', 'E'])

【讨论】:

  • 这是最好的方法,但我不会使用箭头功能,因为它还没有得到广泛支持。
  • 在我工作的地方,我们使用 babel,这就是我最终在任何地方都使用 ES6 的原因。感谢您指出。
【解决方案3】:

过滤器仅适用于数组。因此,您需要定义一个新变量并运行一个 for 循环。

var mynewobject ={};
for (var key in myobject)
{
   if (...) // apply your condition here
      mynewobject[key] = myobject[key]
}

【讨论】:

    【解决方案4】:

    使用下划线(http://underscorejs.org/) 或 loadash(https://lodash.com/)。

    有像 _.pick 这样的方法来选择特定的节点。

    还有更多选项可供选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-07
      • 2022-11-30
      • 2022-10-14
      • 1970-01-01
      • 2016-05-15
      • 1970-01-01
      • 2018-05-25
      • 1970-01-01
      相关资源
      最近更新 更多