Skip to content Skip to sidebar Skip to footer

How To Get Child Object's Element?

How to get e's value without knowing which group, which means only use obj and e? And also can use same way to get a. Thanks let obj:Object = { a: 'value1', b: 'value2', grou

Solution 1:

I would do it like this:

function findValue(key, obj) {
    for (var i in obj) {
        if (obj.hasOwnProperty(i)) {
            if (i === key) {
                return obj[i];
            } elseif (typeof(obj[i]) == "object") {
                varvalue = findValue(key, obj[i]);
                if (typeof(value) !== "undefined") { returnvalue; }
            }
        }
    }
}

findValue('a', obj);
//"value1"
findValue('e', obj);
//"value5"

Solution 2:

You can use Object.keys() to iterate through properties and Object.hasOwnProperty() to test if object contains property:

let key = Object.keys(obj)
                .find(k => obj[k].hasOwnProperty('e'));

console.log(obj[key].e);

Solution 3:

Version which returns falsy values, too.

functionfind(key, object) {
    var value;
    Object.keys(object).some(function (k) {
        if (key === k) {
            value = object[k];
            returntrue;
        }
        if (typeof object[k] === 'object') {
            value = find(key, object[k]);
            return value !== undefined;
        }
    });
    return value;
}

var obj = { a: 'value1', b: 'value2', group1: { c: 'value3', d: 'value4' }, group2: { e: 'value5', f: 'value6' }, group3: { g: '', h: 0 } };

document.write(find('e', obj) + '<br>');
document.write(find('g', obj) + '<br>');
document.write(find('h', obj) + '<br>');

Post a Comment for "How To Get Child Object's Element?"