【问题标题】:Filter nested objects by property按属性过滤嵌套对象
【发布时间】:2020-10-09 02:12:37
【问题描述】:

我正在使用一个(设计糟糕的)API,它发送以下响应:

{
   "0" : {
      "name" : "John",
      "last_name" : "Doe"
   },
   "1" : {
      "name": "Mary",
      "last_name": "Ann"
   },
   [...]
}

您可能已经注意到,它是一个带有嵌套对象的大型 JSON 对象。因为它不是一个数组,所以我不能使用.filter()。那么,如何通过嵌套对象属性(例如 namelast_name)过滤这个大对象?

【问题讨论】:

  • 您可以使用Object.values(type).flat() 将其设为数组。然后它将对象值作为单个数组。
  • 您能举个例子吗?不幸的是,我不熟悉 Javascript
  • 过滤后的预期输出是数组还是对象?键(即:0、1 等)是否像数组中的索引一样连续,或者它们之间是否存在间隙(例如:您有键 0、3,但没有介于 1,2 之间的键)

标签: javascript node.js arrays json rest


【解决方案1】:

您可以使用 Object.values(type).flat() 将其设为数组。然后它将对象值作为单个数组。

const input1 = {
   "0" : {
      "name" : "John",
      "last_name" : "Doe"
   },
   "1" : {
      "name": "Mary",
      "last_name": "Ann"
   }
}

function search(input, key) {
  return Object.values(input).flat().filter(({ name }) => name === key);
}

console.log(search(input1, "John"));

【讨论】:

    猜你喜欢
    • 2021-09-27
    • 2021-05-09
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多