Доступ к вложенным дочерним свойствам объекта javascript с помощью итераций - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть объект, из которого я хочу получить доступ к дочерним свойствам

var obj={
      "Total Cost of Ownership": {
        "Operational Cost": {
          "Asset Cost": {
            "Maintenance": {
              "Scheduled": {
                "Predictive": [
                  "Parts",
                  "Labours",
                  "Consumables"
                ],
                "Periodic": [
                  "Parts",
                  "Labours",
                  "Consumables"
                ]
              },
              "Unscheduled": [
                "Parts",
                "Labours",
                "Consumables"
              ],
              "Other Maintenance": [
                "Parts",
                "Labours",
                "Consumables"
              ]
            },
            "Compliance": [
              "Emissions",
              "HOS"
            ]
          },
          "Under Utilization Cost": [
            "Asset Unassigned",
            "LTL",
            "Empty Miles",
            "Downtime",
            "Idling Time",
            "Crew Unassigned Time"
          ],
          "Route Cost": {
            "Fuel": [
              "Defined Route",
              "Excess Miles",
              "Unattributable Miles"
            ],
            "Charging": {
              
            },
            "Wait Time": {
              
            },
            "Toll": {
              
            }
          },
          "Crew Cost": [
            "Driving Violations",
            "Slary & Insurance",
            "Training"
          ],
          "Unsafe Operations Cost": [
            "Fatalities",
            "Injuries",
            "Unsalvageable Vehicles"
          ]
        }
      }
    }
    
var str1 = "Total Cost of Ownership";
var str2 = "Total Cost of Ownership*Operational Cost*Asset Cost"


function getChildOf(x){
    	if(x.split("").includes("*")){
    		var temp = "obj"
    		x.split("*").forEach((e,i,arr)=>{
    			temp = temp+"['"+e+"']"
    		});
    		var final = temp;
    		console.log(final)
    	}else if(x=="Total Cost of Ownership"){
    		console.log(Object.keys(obj["Total Cost of Ownership"]));
    	}
    }
    
    getChildOf(str1)
    getChildOf(str2)

У меня есть строки, согласно которым я хочу вернуть дочерний объект

var str1 = "Total Cost of Ownership";
var str2 = "Total Cost of Ownership*Operational Cost*Asset Cost"

Я написал для него функцию

СейчасЯ хотел бы, чтобы функция возвращала дочерние объекты объекта в соответствии с вводом функции, но я не могу получить к ней доступ.Запросить оптимальное решение?

1 Ответ

1 голос
/ 26 сентября 2019

Используйте это

function getChildOf(x){
	var keys = x.split("*")
	let tempObj = obj;
	for (const key of keys) {
		    tempObj = tempObj[key]
    }
    return tempObj;
}

// Test with your data
var obj={
  "Total Cost of Ownership": {
    "Operational Cost": {
      "Asset Cost": {
        "Maintenance": {
          "Scheduled": {
            "Predictive": [
              "Parts",
              "Labours",
              "Consumables"
            ],
            "Periodic": [
              "Parts",
              "Labours",
              "Consumables"
            ]
          },
          "Unscheduled": [
            "Parts",
            "Labours",
            "Consumables"
          ],
          "Other Maintenance": [
            "Parts",
            "Labours",
            "Consumables"
          ]
        },
        "Compliance": [
          "Emissions",
          "HOS"
        ]
      },
      "Under Utilization Cost": [
        "Asset Unassigned",
        "LTL",
        "Empty Miles",
        "Downtime",
        "Idling Time",
        "Crew Unassigned Time"
      ],
      "Route Cost": {
        "Fuel": [
          "Defined Route",
          "Excess Miles",
          "Unattributable Miles"
        ],
        "Charging": {

        },
        "Wait Time": {

        },
        "Toll": {

        }
      },
      "Crew Cost": [
        "Driving Violations",
        "Slary & Insurance",
        "Training"
      ],
      "Unsafe Operations Cost": [
        "Fatalities",
        "Injuries",
        "Unsalvageable Vehicles"
      ]
    }
  }
}

var str1 = "Total Cost of Ownership";
var str2 = "Total Cost of Ownership*Operational Cost*Asset Cost";

console.log(getChildOf(str1));
console.log(getChildOf(str2));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...