Как проверить наличие пустого свойства объекта в массиве объектов в Javascript

1

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

var obj = [{fname:"name1",lname:"lname1"},
           {fname:"name2",lname:"name2"},
           {fname:"",lname:"name3"}
          ];
  • 0
    «если какое-либо из свойств объекта в любом из объектов в массиве является нулевым» Можете ли вы привести пример того, что вы пытаетесь описать, и ожидаемого результата?
  • 0
    В вашем примере нет свойства с null значением
Показать ещё 4 комментария
Теги:

2 ответа

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

вы можете получить список всех значений в объекте, используя Object.values(). Вы можете использовать filter() для фильтрации элементов из массива. Объединив эти два, вы можете сделать что-то вроде этого:

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

var obj = [{fname:"name1",lname:"lname1"},
        {fname:"name2",lname:"name2"},
        {fname:"",lname:"name3"},
        {fname:null,lname:"name4"}];

var filterobj = obj.filter(function(o){
    var values = Object.values(o);
    var arr2 = ["", null]; //array of values you don't want.
    if(arr2.some(function (val) { return values.indexOf(val) >= 0; })) //checks if atleast one value of arr2 is in values.
         return false;
    else 
         return true;
});

console.log(filterobj);
0

Вы можете использовать Array.reduce уменьшить массив только те элементы, которые имеют непустое fname

var obj = [{fname:"name1",lname:"lname1"},
        {fname:"name2",lname:"name2"},
        {fname:"",lname:"name3"},
        {fname:null,lname:"name4"}];

var goodNames = obj.reduce(function (notEmptyNames, name) { 
    if (name.fname) notEmptyNames.push(name);
    return notEmptyNames;
}, []);

console.log(goodNames);

Ещё вопросы

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