В моем приложении у меня есть данные, которые представляют собой массив объектов. Если любое свойство объекта в любом из объектов массива пустое, данные не должны сохраняться. рассмотрим приведенные ниже примеры данных, как пройти через все объекты в массиве и проверить любое пустое значение. Ниже данных третий объект имеет пустую fname propety, как найти свойства пустого объекта, подобные этому
var obj = [{fname:"name1",lname:"lname1"},
{fname:"name2",lname:"name2"},
{fname:"",lname:"name3"}
];
вы можете получить список всех значений в объекте, используя 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);
Вы можете использовать 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);
null
значением