根据标头值返回json对象

时间:2019-07-17 13:35:01

标签: javascript json object

我认为这是非常基本的,但是我无法在线找到简单方法来找到答案。以下是我正在使用javascript开发的Web应用程序的控制台(console.log(group))上显示的对象。

对象是一个包含对象数组的组。我想做的就是使用组中对象的名称来返回组中的特定对象。

例如,为了将数组返回0,我想插入Washer_Cube而不是返回它。目前,如果我执行以下操作,它将起作用:

group.children [0];

但是我想要类似的东西:

group.children.name [“ Washer_Cube”]

这显然是错误的语法。

任何帮助表示赞赏!!!!

Yb {uuid: "5FAA0E8A-2423-41A4-BB27-95B0C021F4F4", name: "", type: "Group", [enter image description here][1]parent: Fd, children: Array(14), …}
castShadow: false
children: Array(14)
    0: ha {uuid: "37CAB95F-E817-415F-A0DF-3B90BFA1A610", name: "Washer_Cube", type: "Mesh", parent: Yb, children: Array(0), …}
    1: ha {uuid: "BA931E5D-C456-492F-97FC-D25E64CC5F43", name: "Cube_wall", type: "Mesh", parent: Yb, children: Array(0), …}
    2: ha {uuid: "F0E308E5-5EC2-4989-9331-DDC6CCC07429", name: "2", type: "Mesh", parent: Yb, children: Array(0), …}
    3: ha {uuid: "02FDDF6E-9D8E-4209-AAAE-DA32BAEB2CE6", name: "4", type: "Mesh", parent: Yb, children: Array(0), …}

1 个答案:

答案 0 :(得分:0)

您可以遍历children数组中的每个子项,并检查该子项的name属性是否与标题匹配。如果是这样,您可以将其退回。在下面,我创建了一个帮助器函数,您可以使用该函数来获取该特定对象(如果存在)(否则它将仅返回null)。

function getChildByHeader(children, header) {
  for (let child of children) {
    if (child.name === header) {
      return child
    }
  }

  return null
}

var testObject = {
  uuid: "5FAA0E8A-2423-41A4-BB27-95B0C021F4F4",
  name: "",
  type: "Group",
  castShadow: false,
  children: [
    { uuid: "37CAB95F-E817-415F-A0DF-3B90BFA1A610", name: "Washer_Cube", type: "Mesh" },
    { uuid: "BA931E5D-C456-492F-97FC-D25E64CC5F43", name: "Cube_wall", type: "Mesh" },
    { uuid: "F0E308E5-5EC2-4989-9331-DDC6CCC07429", name: "2", type: "Mesh" }
  ]
}

console.log(getChildByHeader(testObject.children, "Washer_Cube"))

这将按预期返回子对象:

{ uuid: "37CAB95F-E817-415F-A0DF-3B90BFA1A610", name: "Washer_Cube", type: "Mesh"}