Фильтровать массив по значению ключа в объекте?

Есть массив:

const arr = [
  {a: 'a', b: 'b'}, 
  {a: null, b: 'b'},
  {a: 'a', b: null}
];

Как его отфильтровать, чтобы на выходе получился массив только с теми элементами, у которых нет null в значении ключа?

Т.е. применив фильтр, получать [{a: 'a', b: 'b'}]


Ответы (4 шт):

Автор решения: Genesis
const arr = [
  { a: "a", b: "b" },
  { a: null, b: "b" },
  { a: "a", b: null }
];

const res = arr.map((obj) => {
  for (const key in obj) {
    const element = obj[key];
    if (obj[key] == null) {
      delete obj[key];
    }
  }
  return obj;
});
→ Ссылка
Автор решения: smellyshovel

Возможно, что-то вроде такого. Хотя условие понятно не до конца.

const arr = [
  {a: 'a', b: 'b'}, 
  {a: null, b: 'b'},
  {a: 'a', b: null}
];


const res = arr.filter((obj) => {
  return !Object.keys(obj).some((key) => {
    return obj[key] === null;
  });
});

console.log(res);

→ Ссылка
Автор решения: Pilaton

const arr = [
  {a: 'a', b: 'b'}, 
  {a: null, b: 'b'},
  {a: 'a', b: null}
];

const needToExclude = null;

let newArr = arr.filter((obj) => !Object.values(obj).some((el) => el === needToExclude));
console.log('newArr', newArr);

→ Ссылка
Автор решения: Анастасия Сергеевна

Это решение не то, что вам нужно, убирает только свойства со значениями null, а не весь элемент массива

arr.map(item => {
    Object.keys(item).forEach(function (key) {
            if (item[key] === null) {
                delete (item[key])
            }
        }
    )
})

Вам подходит этот вариант

arr.filter((obj) => !Object.values(obj).some(el => el === null))
→ Ссылка