Как удалить обьект без значения в JSON с помощью js?
Есть такой JSON
{"name":"Вася", "phone":"789654321","name":"", "phone":""}
Как мне удалить c помощью js пустой обьект в json ?
то есть если name и phone === null то его не должно быть в фале, а файл большой и именований много.
Ответы (1 шт):
Автор решения: Арман
→ Ссылка
Для начала уточнение
Существование такого объекта...
{ "name": "Вася", "phone": "789654321", "name": "", "phone": "" }
...в JSON невозможно. Так как, поскольку имена ключей повторяются, при разбое она станет таким...
{ name: "", phone: ""}
поэтому я думаю что вы имеете в виду такие объекты:
[
{ "name": "Вася", "phone": 789654321 },
{ "name": "", "phone": "" },
{ "name": "Женя", "phone": 111111111 }
]
Решение
А для таких объектов советую такое решение:
при получении объекта разбираем его из JSON, фильтруем и оставляем те объекты в котором name и phone не null и собирая обратно в JSON присваиваем переменной.
let list = `[
{ "name": "Вася", "phone": 789654321 },
{ "name": "", "phone": "" },
{ "name": "Женя", "phone": 111111111 }
]`;
list = JSON.stringify(JSON.parse(list).filter((item) => {
if (!(item.name === null || item.phone === null))
return item;
}));
Ещё момент
При разборе JSON где у ключа отсутствует значение мы получим не null, а пустую строку, поэтому правильнее будет так:
let list = `[
{ "name": "Вася", "phone": 789654321 },
{ "name": "", "phone": "" },
{ "name": "Женя", "phone": 111111111 }
]`;
list = JSON.stringify(JSON.parse(list).filter((item) => {
if (!(item.name === `` || item.phone === `` ))
return item;
}));