Сколько вложенных объектов я должен определить в JavaScript? - PullRequest
0 голосов
/ 25 июня 2018

Я новичок в javascript.

  • Здесь мне интересно, сколько вложенных или внутренних объектов я могу определить в javascript
  • Как найти первые 2 вложенных объекта ключа в JS.

    Я также ищу его в Google, но я не нашел никакого решения.

вот пример того, что я хочу!

     var obj = {
      a:{
       b:{
         c:{
             //so on
           }
         }
      }
    }

спасибозаранее.

Ответы [ 3 ]

0 голосов
/ 25 июня 2018
  1. ответ на первый вопрос.

Нет ограничений для вложенного объекта.Вы можете определить вложенный объект так, как хотите, пока ваш предел памяти не превысит.

ответ на второй вопрос.

Вот код для поиска ключей от вложенных объектов, но он работает только для 2-го вложенного объекта.

   for (var key in ob) {
    if (!ob.hasOwnProperty(key)) 
    continue;
    var obj = ob[key];
   help += "</br>"
   for (var prop in obj) {
        // skip loop if the property is from prototype
        if(!obj.hasOwnProperty(prop)) continue;

        help += " ---) \""+key+" "+prop+"\"</br>"

    }
}

Скажите, если выполучил то, что вы хотите.

0 голосов
/ 25 июня 2018

Здесь мне интересно, сколько вложенных или внутренних объектов я могу определить в javascript?

В спецификации JS это не определено.

Вы можетеопределите, сколько вы хотите вложенного или внутреннего объекта.

Но: не забывайте: каждый объект в вашем коде должен быть в памяти компьютера.А если у вас много объектов, ваш браузер не будет работать правильно.


Как узнать, сколько ключей объектов определено в JS?

Со следующими методами:

Возвращает массив, содержащий имена всехперечисляемые и не перечисляемые свойства данного объекта.

Возвращает массив всех свойств символа, найденных непосредственно для данного объекта.

вы найдете длину, сколько ключей объектов определены в вашем объекте.

0 голосов
/ 25 июня 2018

Здесь я задаюсь вопросом о том, сколько вложенных или внутренних объектов я могу определить в javascript

Нет указанного ограничения.

В случае инициализатора объектатакой как тот, который вы показали, в конце концов вы столкнетесь с какими-то ограничениями конкретного движка JavaScript, выполняющего код, например, вокруг его анализа / обработки инициализатора, но ничего не определено в спецификации.

Если вы строите объекты динамически самостоятельно, например, так:

// Don't run this code!
var obj = {};
while (true) {
    obj.child = {};
    obj = obj.child;
}

... нет никаких оснований полагать, что вы столкнетесь с чем-то другим, кроме ограничения памяти, связанного с количеством объектоввы создаете (не их вложение).

как узнать, сколько ключей объектов определено в js

В одном конкретном объекте вы можете получить массивего собственные (не унаследованные) свойства через Object.getOwnPropertyNames и Object.getOwnPropertySymbols, а затем length массива.Чтобы выяснить, сколько свойств у объекта и , сколько объектов ссылаются на его свойства, вы должны использовать рекурсивный поиск, но остерегайтесь циклических структур.

Например:

const obj = {
  a: {
    b: {
      c: {
      }
    }
  }
};

function countProps(target, recursive = false) {
  const ownProperties = [
    ...Object.getOwnPropertyNames(target),
    ...Object.getOwnPropertySymbols(target)
  ];
  let count = ownProperties.length;
  if (recursive) {
    for (const key of ownProperties) {
      const value = target[key];
      if (value && typeof value === "object") {
        count += countProps(value, true);
      }
    }
  }
  return count;
}

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