Получить следующее свойство вложенного объекта в javascript - PullRequest
0 голосов
/ 19 марта 2020

Я пытался написать функцию, которая возвращала бы другой ключ свойства в строке.

Допустим, у нас есть это JSON:

'Test123': {
    'Another Test': {},
    'Test some more': {
        'Still testing?': {
            'Yeah...': {}
        },
        'Never ending story': {}
    }
},

Например, если мы передадим «Все еще тестирование?» ключ в функцию, он должен вернуть «Да ...», но если мы передадим «Да ...», он должен вернуть «Никогда не заканчивая историю». Кто-нибудь знает, кто это делает? Я пытался написать функцию, которая делает это, но мой мозг не поддерживает это ...

1 Ответ

1 голос
/ 19 марта 2020

let obj = {
    'Test123': {
        'Another Test': {},
        'Test some more': {
            'Still testing?': {
                'Yeah...': {}
            },
            'Never ending story': {}
        }
    }
}

function nextKey(keyStr, object) {
    if (!keyStr || !object || typeof object != 'object' || object.constructor.name != 'Object') {
        console.log("Improper Parameter !!!")
        return
    }
    let found = false
    let answer = {}
    findKey(object)
    return (Object.keys(answer).length) ? answer : "";

    function findKey(obj) {
        for (let key of Object.keys(obj)) {
            if(Object.keys(answer).length) return;
            let value = obj[key]
            if(key == keyStr)found = true;
            else if(found) {answer.key = key; answer.value = value; return}
            if (Object.keys(value).length) findKey(value)
        }
    }
}

console.log(nextKey('Still testing?', obj))     //{ key: 'Yeah...', value: {} }
console.log(nextKey('Yeah...', obj))            //{ key: 'Never ending story', value: {} }
...