Рамда: Как удалить ключи в объектах с пустыми значениями? - PullRequest
3 голосов
/ 16 июня 2019

У меня есть этот объект:

let obj = {
  matrimonyUrl: 'christian-grooms',
  search_criteria:
    'a:2:{s:6:"gender";s:4:"Male";s:9:"community";s:9:"Christian";}',
  mothertongue: null,
  religion: 'Christian',
  caste: '',
  country: null
};

Мне нужно удалить все пары ключ / значение в этом объекте, где значение пустое, т.е. ''

Итак, свойство caste: ''должны быть удалены в вышеуказанном случае.

Я пытался:

R.omit(R.mapObjIndexed((val, key, obj) => val === ''))(obj);

Но это ничего не делает.reject тоже не работает.Что я делаю не так?

Ответы [ 3 ]

5 голосов
/ 16 июня 2019

Вы можете использовать R.reject (или R.filter ) для удаления свойств из объекта с помощью обратного вызова:

const obj = {
  matrimonyUrl: 'christian-grooms',
  search_criteria:
    'a:2:{s:6:"gender";s:4:"Male";s:9:"community";s:9:"Christian";}',
  mothertongue: null,
  religion: 'Christian',
  caste: '',
  country: null
};

const result = R.reject(R.equals(''))(obj);

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js"></script>
0 голосов
/ 16 июня 2019

Вы в порядке использовать чистый JavaScript для этого?(без Рамды)

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

for (const key in obj) {
    if (obj[key] === "") {
        delete obj[key];
    }
}

Если вы предпочитаете однострочное:

Object.entries(obj).forEach(e => {if (e[1] === "") delete obj[e[0]]});
0 голосов
/ 16 июня 2019
const obj = {
  matrimonyUrl: 'christian-grooms',
  search_criteria:
    'a:2:{s:6:"gender";s:4:"Male";s:9:"community";s:9:"Christian";}',
  mothertongue: null,
  religion: 'Christian',
  caste: '',
  country: null
};

const result = R.reject(R.equals(''))(obj);

console.log(result);
...