Как избавиться от некоторых свойств объекта в зависимости от состояния? - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть объект, и я хочу удалить все свойства, имеющие значение null, но я хочу сохранить специальное свойство, равное alwaysCountWithMe (даже если его значение равно нулю).Мой код выглядит так:

var object = {
"firstname": null, 
"lastname": "White", 
"hobby": null,
"c": 3 , 
"alwaysCountWithMe": null
};
console.log(_.pickBy(object, value => !!value));

Это печатает:

{"lastname": "White", "c": 3}

Но я хочу напечатать:

{"lastname": "White", "c": 3, "alwaysCountWithMe": null }

Ответы [ 3 ]

0 голосов
/ 08 февраля 2019

Похоже, что второй аргумент, передаваемый методу pickBy, является именем ключа, поэтому вы, вероятно, можете изменить его на:

console.log(_.pickBy(object, (value, key) => !!value || key === 'alwaysCountWithMe'));
0 голосов
/ 08 февраля 2019

Просто измените вашу функцию (второй аргумент _.pickBy) на аргумент key, чтобы вы могли проверить, является ли key alwaysCountWithMe:

var object = {
  "firstname": null,
  "lastname": "White",
  "hobby": null,
  "c": 3,
  "alwaysCountWithMe": null
};

    console.log(_.pickBy(object, (value, key) => !!value || key == "alwaysCountWithMe"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
0 голосов
/ 08 февраля 2019

Расширение существующего решения, как насчет этого, используя новый синтаксис объекта ES6:

var object = { firstname: null, lastname: 'White', hobby: null, c: 3, alwaysCountWithMe: null };
console.log({
  ...(_.pickBy(object, value => value !== null)),
  alwaysCountWithMe: object.alwaysCountWithMe
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
...