Я хочу додати відповіді вище, тому що у вас можуть бути різні наміри від Javascript. Об'єкт JSON та об'єкт Javascript - це різні речі, і ви, можливо, захочете повторити властивості об’єкта JSON, використовуючи рішення, запропоновані вище, а потім здивуватися.
Припустимо, у вас є об'єкт JSON, наприклад:
var example = {
"prop1": "value1",
"prop2": [ "value2_0", value2_1"],
"prop3": {
"prop3_1": "value3_1"
}
}
Неправильний спосіб повторити його "властивості":
function recursivelyIterateProperties(jsonObject) {
for (var prop in Object.keys(example)) {
console.log(prop);
recursivelyIterateProperties(jsonObject[prop]);
}
}
Ви можете бути здивовані бачити протоколювання консолі 0
, 1
і т.д. , коли Перебір властивостей prop1
і prop2
іprop3_1
. Ці об'єкти - це послідовності, а індекси послідовності є властивостями цього об’єкта в Javascript.
Кращим способом рекурсивної ітерації властивостей об'єкта JSON буде спочатку перевірити, чи є цей об'єкт послідовністю чи ні:
function recursivelyIterateProperties(jsonObject) {
for (var prop in Object.keys(example)) {
console.log(prop);
if (!(typeof(jsonObject[prop]) === 'string')
&& !(jsonObject[prop] instanceof Array)) {
recursivelyIterateProperties(jsonObject[prop]);
}
}
}
if (typeof(obj[propt]) === 'object') {
/ * Зробіть це знову * /}