代码之家  ›  专栏  ›  技术社区  ›  Devmix

如何根据条件从对象中除去一些属性?

  •  0
  • Devmix  · 技术社区  · 6 年前

    我有一个对象,我想删除所有值为的属性 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 回复  |  直到 6 年前
        1
  •  1
  •   Taplar    6 年前

    看起来传递给pickby方法的第二个参数是键名,因此您可以将其更改为:

    console.log(_.pickBy(object, (value, key) => !!value || key === 'alwaysCountWithMe'));
    
        2
  •  1
  •   MTCoster    6 年前

    扩展现有的解决方案,使用一些新的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>
        3
  •  1
  •   Jack Bashford    6 年前

    改变你的函数(第二个参数 _.pickBy )采取 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>