Я пытаюсь получить все ключевые имена 2 уровня в объекте (возможно, в будущем).
Например, данный объект, как:
myThing = {
'someKeyTopLevel1': {
'someKeySecondLevel1': [
... very large data here ...
],
'someKeySecondLevel5': [
... very large data here ...
]
},
'someKeyTopLevel2': {
'someKeySecondLevel1': [
... very large data here ...
],
'someKeySecondLevel2': [
... very large data here ...
],
'someKeySecondLevel3': [
... very large data here ...
]
}
...
}
Желаемый результат будет массивом «someKeySecondLevel1», «someKeySecondLevel2», 3, 5 и т. Д.
Я думал сделать что-то вроде (псевдокод):
- Возьмите все ключи с верхнего уровня (
Object.keys(myThing)
) - Перебирайте эти ключи и получайте записи, получайте ключи в этих записях, используя
Object.keys(...)
снова.
Есть ли более стандартный / быстрый / лучший способ сделать это?
Я обеспокоен тем, что, поскольку наш набор данных на самом деле довольно большой, он может работать не очень хорошо, особенно если в итоге нам придется что-то делать для чего-то, скажем, на три уровня ниже или больше.
Любая помощь будет оценена по достоинству!
2 ответа
Я сомневаюсь, что есть что-то лучше этого, по крайней мере, насколько мне известно, именно то, что вы предложили:
Object.keys(myThing).reduce((acc,val)=> [...acc, ...Object.keys(myThing[val])], []);
myThing = {
'someKeyTopLevel1': {
'someKeySecondLevel1': [],
'someKeySecondLevel5': []
},
'someKeyTopLevel2': {
'someKeySecondLevel1': [],
'someKeySecondLevel2': [],
'someKeySecondLevel3': []
}
};
for (var l1Key in myThing) {
for (var l2Key in myThing[l1Key ]) {
console.log(l2Key);
}
}
Похожие вопросы
Связанные вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.