为了账号安全,请及时绑定邮箱和手机立即绑定

在java脚本中从嵌套的n级数组/JSON对象中搜索对象

在java脚本中从嵌套的n级数组/JSON对象中搜索对象

江户川乱折腾 2021-11-18 15:55:19
我有一个带有嵌套列表的 JSON 对象。此列表中的每个元素也可以是嵌套列表。每个元素的深度可以达到 n 级。我需要遍历所有元素并获取与搜索条件匹配的对象。让我们说项目名称。如果我搜索应返回相应对象的项目名称。列表结构嵌套结构
查看完整描述

3 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

function searchItemByName(sourceObject, name) {


    if (sourceObject['ItemName'] === name) {

        return sourceObject;

    }


    if (sourceObject['ChildrenBillOfMaterials']) {

        for (let i = 0; i < sourceObject['ChildrenBillOfMaterials'].length; i++) {

            let targetObject = searchItemByName(sourceObject['ChildrenBillOfMaterials'][i], name)

            if (targetObject !== null) {

                return targetObject;

            }

        }

    }

    return null;

}


查看完整回答
反对 回复 2021-11-18
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

这是像日志所说的简单语法错误


在 js 中以 { ... } 开头是不正确的。


您的 JSON 对象有效但需要分配给对象实例。换句话说,您需要使用:


var someObject = {...}


try {


var test = {

  "Description": "Rooftop heating/ cooling",

  "Category": "HVAC",

  "PartNumber": "MTU987456",

  "Quantity": "1",

  "Dimensions": "20(h)X20(b)",

  "BomID": "BOM-430",

  "Sublocation": "1st Floor",

  "GroupID": "BOM-430",

  "pxObjClass": "",

  "Custom3": "cust3 data",

  "Type": "Configured product",

  "Custom2": "cust2 data",

  "Uom": "each",

  "Custom1": "cust1 data",

  "ReferenceId": "1552780013",

  "Manufacturer": "AirXpert Systems",

  "BOMLevel": "0",

  "ItemName": "3-6-9 ton Rooftop heating/ cooling",

  "Supplier": "Voltas",

  "PartRevision": "MTU987456",

  "ChildrenBillOfMaterials": [{

      "ParentID": "BOM-430",

      "Description": "Unit casing",

      "Category": "HVAC",

      "PartNumber": "U987456",

      "Quantity": "1",

      "Dimensions": "20(h)X20(b)",

      "BomID": "BOM-431",

      "Sublocation": "1st Floor",

      "GroupID": "BOM-430",

      "pxObjClass": "",

      "Custom3": "cust3 data",

      "Type": "Part",

      "Custom2": "cust2 data",

      "Uom": "each",

      "Custom1": "cust1 data",

      "ReferenceId": "15527456",

      "Manufacturer": "AirXpert Systems",

      "BOMLevel": "1",

      "ItemName": "Unit casing",

      "Supplier": "Voltas",

      "PartRevision": "U987456",

      "ChildrenBillOfMaterials": [{

          "ParentID": "BOM-431",

          "Description": "Metal casing",

          "Category": "HVAC",

          "PartNumber": "M987456",

          "Quantity": "1",

          "Dimensions": "20(h)X20(b)",

          "BomID": "BOM-432",

          "Sublocation": "1st Floor",

          "GroupID": "BOM-430",

          "pxObjClass": "",

          "Custom3": "cust3 data",

          "Type": "Part",

          "Custom2": "cust2 data",

          "Uom": "each",

          "Custom1": "cust1 data",

          "ReferenceId": "1M5527456",

          "Manufacturer": "AirXpert Systems",

          "BOMLevel": "2",

          "ItemName": "Metal casing",

          "Supplier": "Voltas",

          "PartRevision": "M987456",

          "ChildrenBillOfMaterials": [{

            "ParentID": "BOM-432",

            "Description": "Fibre casing insulation",

            "Category": "HVAC",

            "PartNumber": "M98745e",

            "Quantity": "1",

            "Dimensions": "20(h)X20(b)",

            "BomID": "BOM-433",

            "Sublocation": "1st Floor",

            "GroupID": "BOM-430",

            "pxObjClass": "",

            "Custom3": "cust3 data",

            "Type": "Part",

            "Custom2": "cust2 data",

            "Uom": "each",

            "Custom1": "cust1 data",

            "ReferenceId": "1M5C527456",

            "Manufacturer": "AirXpert Systems",

            "BOMLevel": "3",

            "ItemName": "Fibre casing insulation",

            "Supplier": "Voltas",

            "PartRevision": "M98745e",

            "pxUniqueElementID": 1

          }],

          "pxUniqueElementID": 1

        },

        {

          "ParentID": "BOM-431",

          "Description": "Fibre casing",

          "Category": "HVAC",

          "PartNumber": "M98745e",

          "Quantity": "1",

          "Dimensions": "20(h)X20(b)",

          "BomID": "BOM-445",

          "Sublocation": "1st Floor",

          "GroupID": "BOM-430",

          "pxObjClass": "",

          "Custom3": "cust3 data",

          "Type": "Part",

          "Custom2": "cust2 data",

          "Uom": "each",

          "Custom1": "cust1 data",

          "ReferenceId": "1M5527457",

          "Manufacturer": "AirXpert Systems",

          "BOMLevel": "2",

          "ItemName": "Fibre casing",

          "Supplier": "Voltas",

          "PartRevision": "M98745e",

          "pxUniqueElementID": 2

        }

      ],

      "pxUniqueElementID": 1

    },

    {

      "ParentID": "BOM-430",

      "Description": "Evaporator coil",

      "Category": "HVAC",

      "PartNumber": "U774488",

      "Quantity": "1",

      "Dimensions": "21(h)X21(b)",

      "BomID": "BOM-434",

      "Sublocation": "2nd Floor",

      "GroupID": "BOM-430",

      "pxObjClass": "",

      "Custom3": "cust6 data",

      "Type": "Part",

      "Custom2": "cust5 data",

      "Uom": "one",

      "Custom1": "cust4 data",

      "ReferenceId": "205456",

      "Manufacturer": "AirXpert Systems",

      "BOMLevel": "1",

      "ItemName": "Evaporator coil",

      "Supplier": "Voltas",

      "PartRevision": "U774488",

      "pxUniqueElementID": 2

    },

    {

      "ParentID": "BOM-430",

      "Description": "Fan assembly",

      "Category": "HVAC",

      "PartNumber": "U1FN41100",

      "Quantity": "1",

      "Dimensions": "22(h)X22(b)",

      "BomID": "BOM-435",

      "Sublocation": "3rd Floor",

      "GroupID": "BOM-430",

      "pxObjClass": "",

      "Custom3": "cust9 data",

      "Type": "Part",

      "Custom2": "cust8 data",

      "Uom": "one",

      "Custom1": "cust7 data",

      "ReferenceId": "205457",

      "Manufacturer": "AirXpert Systems",

      "BOMLevel": "1",

      "ItemName": "Fan assembly",

      "Supplier": "Voltas",

      "PartRevision": "U1FN41100",

      "ChildrenBillOfMaterials": [{

          "ParentID": "BOM-435",

          "Description": "Motor",

          "Category": "HVAC",

          "PartNumber": "U14110MOT0",

          "Quantity": "1",

          "Dimensions": "22(h)X22(b)",

          "BomID": "BOM-436",

          "Sublocation": "3rd Floor",

          "GroupID": "BOM-430",

          "pxObjClass": "",

          "Custom3": "cust9 data",

          "Type": "Part",

          "Custom2": "cust8 data",

          "Uom": "one",

          "Custom1": "cust7 data",

          "ReferenceId": "20MO5457",

          "Manufacturer": "AirXpert Systems",

          "BOMLevel": "2",

          "ItemName": "Motor",

          "Supplier": "Voltas",

          "PartRevision": "U14110MOT0",

          "ChildrenBillOfMaterials": [{

            "ParentID": "BOM-436",

            "Description": "Rotor",

            "Category": "HVAC",

            "PartNumber": "U1RR41100",

            "Quantity": "1",

            "Dimensions": "22(h)X22(b)",

            "BomID": "BOM-437",

            "Sublocation": "3rd Floor",

            "GroupID": "BOM-430",

            "pxObjClass": "",

            "Custom3": "cust9 data",

            "Type": "Part",

            "Custom2": "cust8 data",

            "Uom": "one",

            "Custom1": "cust7 data",

            "ReferenceId": "20MORO5457",

            "Manufacturer": "AirXpert Systems",

            "BOMLevel": "3",

            "ItemName": "Rotor",

            "Supplier": "Voltas",

            "PartRevision": "U1RR41100",

            "ChildrenBillOfMaterials": [{

              "ParentID": "BOM-437",

              "Description": "Steel bearings",

              "Category": "HVAC",

              "PartNumber": "U1411ST00",

              "Quantity": "1",

              "Dimensions": "22(h)X22(b)",

              "BomID": "BOM-438",

              "Sublocation": "3rd Floor",

              "GroupID": "BOM-430",

              "pxObjClass": "",

              "Custom3": "cust9 data",

              "Type": "Part",

              "Custom2": "cust8 data",

              "Uom": "one",

              "Custom1": "cust7 data",

              "ReferenceId": "20MOBEO5457",

              "Manufacturer": "AirXpert Systems",

              "BOMLevel": "3",

              "ItemName": "Steel bearings",

              "Supplier": "Voltas",

              "PartRevision": "U1411ST00",

              "pxUniqueElementID": 1

            }],

            "pxUniqueElementID": 1

          }],

          "pxUniqueElementID": 1

        },

        {

          "ParentID": "BOM-435",

          "Description": "Propeller fan",

          "Category": "HVAC",

          "PartNumber": "U141100",

          "Quantity": "1",

          "Dimensions": "22(h)X22(b)",

          "BomID": "BOM-439",

          "Sublocation": "3rd Floor",

          "GroupID": "BOM-430",

          "pxObjClass": "",

          "Custom3": "cust9 data",

          "Type": "Part",

          "Custom2": "cust8 data",

          "Uom": "one",

          "Custom1": "cust7 data",

          "ReferenceId": "205GO457",

          "Manufacturer": "AirXpert Systems",

          "BOMLevel": "2",

          "ItemName": "Propeller fan",

          "Supplier": "Voltas",

          "PartRevision": "PR3",

          "pxUniqueElementID": 2

        }

      ],

      "pxUniqueElementID": 3

    },

    {

      "ParentID": "BOM-430",

      "Description": "Compressor",

      "Category": "HVAC",

      "PartNumber": "U78999",

      "Quantity": "1",

      "Dimensions": "23(h)X23(b)",

      "BomID": "BOM-440",

      "Sublocation": "4th Floor",

      "GroupID": "BOM-430",

      "pxObjClass": "",

      "Custom3": "cust12 data",

      "Type": "Part",

      "Custom2": "cust11 data",

      "Uom": "each",

      "Custom1": "cust10 data",

      "ReferenceId": "205458",

      "Manufacturer": "AirXpert Systems",

      "BOMLevel": "1",

      "ItemName": "Compressor",

      "Supplier": "Voltas",

      "PartRevision": "U78999",

      "pxUniqueElementID": 4

    }


  ]

};

console.log(test)

} catch(err){console.log(err)}

 


查看完整回答
反对 回复 2021-11-18
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

您可以使用“.”继续查找子元素。


 $.each("jsonobj variable", function(index, element) {

   alert(element.description); 

  });


查看完整回答
反对 回复 2021-11-18
  • 3 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信