Длина объекта json javascript

let myObj = {
name: 'Mark',
age: 32,
working: 'yes'
}

Как мне проверить, есть ли в myObj хотя бы одна запись? Object.keys (myObj) .length дает 3, что является длиной ключей (очевидно). Я хотел бы проверить, имеет ли он значение, а не пусто?

Чтобы уточнить, вы хотите знать, есть ли у объекта хотя бы один ключ с истинным значением? Например: {foo: "bar"} в порядке, а {foo: undefined} - нет?

CRice 02.04.2018 21:26

Верный. Это мой вопрос.

SamT 02.04.2018 21:26

Я не уверен, почему этот вопрос был отклонен. Ответы и ответ не походили на непонятный вопрос. какая разница :)

SamT 02.04.2018 21:52
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
52
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Так что проверьте значения свойств. Вы можете использовать функцию some и проверить, имеет ли хотя бы одно свойство значение, отличное от null и undefined.

let myObj = {
   name: 'Mark',
   age: 32,
   working: 'yes'
};

const hasOne = Object.keys(myObj).some(key => myObj[key] !== null && myObj[key] !== undefined);

console.info(hasOne);
Ответ принят как подходящий

В es6 это можно сделать с помощью комбинации Object.values и метода массива .some:

Object.values(myObj).some(Boolean)

Это будет верно только в том случае, если myObj содержит хотя бы одно значение, которое не является ложным. Значения ложных значений: undefined, null, 0, NaN, "" и false.

Я искал один лайнер, и это работает. Однако сейчас я смотрю на свою бизнес-логику и думаю, нужно ли принудительно вводить значения хотя бы в нескольких полях. Спасибо за быстрый ответ и время.

SamT 02.04.2018 22:23

Вы можете сделать что-то подобное.

let myObj1 = {
    name: 'Mark',
    age: 32,
    working: 'yes'
};

let myObj2 = {};

let myObj3 = {
    name: null,
    age: null,
    working: null
};


function validateObj(obj) {
    for (var prop in obj) {
        if (obj.hasOwnProperty(prop)) {
            if (obj[prop]) return true;
        }
    }
    return false;
}

console.info(validateObj(myObj1)); // true
console.info(validateObj(myObj2)); // false
console.info(validateObj(myObj3)); // false

По умолчанию все ответы проходят голосование. Я ничего не делал. Даже мой вопрос отвергнут. Не знаю почему.

SamT 02.04.2018 21:49

Поменял голосование. Спасибо за ваш ответ. Я все еще анализирую, какой из всех имеющихся у меня ответов использовать. Спасибо за ваше время.

SamT 02.04.2018 21:51

Другие вопросы по теме