JSON Javascript - Карта свойств - Справочник по функциям - PullRequest
4 голосов
/ 08 мая 2011

У меня есть объект JSON в Javascript, как показано ниже:

var myjson={"name":"myname","address":"Myaddress"}
// if my json is not empty: 
         //do something

Я хочу выяснить, является ли объект пустым, то есть присутствуют ли какие-либо ключи. Как я могу сделать это в Javascript?

Безуспешно искали в Поиске Google, но сложно сказать, что искать с таким количеством ненужной (нерелевантной) информации.

Есть ли официальные ссылки на то, как это работает (включая удаление ключа)? Или я должен бороться с поиском Google (без проблем для меня) и надеяться на какую-то важную информацию?

Ответы [ 3 ]

6 голосов
/ 08 мая 2011

Если у вас ECMAScript 5:

Object.keys(myjson).length

скажет вам, сколько (перечислимых) свойств существует в объекте.

См. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys,, где также есть версия, которую вы можете добавить в свой собственный код, если ваш браузер не поддерживает его.

4 голосов
/ 08 мая 2011

Лучший способ определить, является ли объект JavaScript пустым, - это использовать Object.keys, который возвращает массив ключей объектов (не значений).

Object.keys({foo: "bar"}) // returns ["foo"]

Object.keys({}) // returns []

Так что простой способ определить, является лиобъект имеет ключи для подсчета длины этого массива:

if(Object.keys(myjson).length) {
    // this object has keys!
}
0 голосов
/ 08 мая 2011

Как отмечалось в других ответах, Object.keys() должно сработать, но не будет работать в старых браузерах, которые не поддерживают ECMAScript 5. Вот функция быстрого теста, которая должна работать в кросс-браузерной среде:

function isEmpty(o) {
    // check all keys in the object
    for (var key in o) {
        // but don't go up the prototype chain
        if (o.hasOwnProperty(key)) {
            // if found, stop right away
            return false;
        }
    }
    return true;
}

если вы относитесь к тому человеку, который любит более жесткий и менее многословный код, вы можете написать его так:

function isEmpty(o) {
    for (var key in o) if (o.hasOwnProperty(key)) return false;
    return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...