Проверьте, есть ли у объекта пустые свойства [duplicate]

1

Скажем, у меня есть следующий объект JS

data = {
    name: "John",
    dataOfBirth: "",
    externalId: 2548,
    email: "[email protected]",
    mobile: ""
}

Я получаю такой объект со многими другими свойствами, которые могут быть либо String, Integer или undefined. Для меня, чтобы обновить мою базу данных, я не могу переопределить действительную информацию с пустой.

Я мог бы попробовать, if (data.email === "") delete data.email со всеми из них, но это кажется непрактичным для поддержки.

Есть ли способ сканировать все свойства, не указывая ни одного из них и удалять все пустые/неопределенные?

Теги:

2 ответа

1
Лучший ответ

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

var data = {
        name: "John",
        dataOfBirth: "",
        externalId: 2548,
        email: "[email protected]",
        mobile: ""
    }

    for(var key in data) {
        if(data[key] === "") {
           console.log(key + " is blank. Deleting it");
           delete data[key]
        }
    }
1

Вы не можете это сделать? Или я чего-то не хватает?

Object.entries(data).filter(([k,v],i)=>!!v)

дайте вам следующее:

"[
    [
        "name",
        "John"
    ],
    [
        "externalId",
        2548
    ],
    [
        "email",
        "[email protected]"
    ]
]"

!! превратит значение в boolean, на этом этапе вы отфильтровываете null, NaN и undefined. В самом деле, если вы хотите попробовать это на вложенных объектах, вам придется рекурсивно делать это, потому что !!Object() всегда прав. Еще лучше было бы рекурсивно и асинхронно копировать объект, отфильтровывать ложные примитивы и передавать обратный вызов в конце концов.

Редактировать:

Кто-то ниже упомянул некоторые ложные значения, которые вы, возможно, захотите сохранить, например, 0. В этом случае их цепочка:

v===null || v===0 || !!v //null, 0 and anything not falsey, but not undefined etc.
  • 0
    Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и / или почему он решает проблему, улучшит долгосрочную ценность ответа.
  • 0
    Для меня это быстрый хак, чтобы избавиться от NaN, null, undefined и т. Д. Но если он хочет сделать это на глубоко вложенном объекте, то ему нужно глубоко клонировать и повторить это. Истинный ответ должен был бы копать намного глубже. Если вы думаете, что можете добавить какую-то ценность, вы можете редактировать Андреаса, спасибо.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню