我有一个Javascript对象像:

var my_object = { a:undefined, b:2, c:4, d:undefined };

如何删除所有未定义的属性?False属性应该保留。


当前回答

为了完成其他答案,在lodash 4中只忽略undefined和null(而不是像false这样的属性),你可以在_.pickBy中使用谓词:

_。pickBy(obj, v !== null && v !== undefined)

例子如下: Const obj = {a: undefined, b: 123, c: true, d: false, e: null}; const filteredObject = _。pickBy(obj, v => v !== null && v !== undefined); console.log = (obj) => document.write(JSON. log)stringify(filteredObject, null, 2)); console.log (filteredObject); < script src = " https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.js " > < /脚本>

其他回答

我喜欢用_。pickBy,因为你可以完全控制你要删除的东西:

var person = {"name":"bill","age":21,"sex":undefined,"height":null};

var cleanPerson = _.pickBy(person, function(value, key) {
  return !(value === undefined || value === null);
});

来源:https://www.codegrepper.com/?search_term=lodash +删除+未定义值+ + +对象

正确答案是:

_.omitBy({ a: null, b: 1, c: undefined, d: false }, _.isNil)

结果是:

{b: 1, d: false}

其他人给出的另一种说法:

_.pickBy({ a: null, b: 1, c: undefined, d: false }, _.identity);

也将删除这里不需要的假值。

省略所有假值,但保留布尔原语,这个解决方案有帮助。

_.omitBy(fields, v => (_.isBoolean(v)||_.isFinite(v)) ? false : _.isEmpty(v));

让田野= str:’CAD’, numberStr:’123’, 123号, boolStrT:’true’, boolStrF:’false’, 假的,假的, 真实, undef: undefined, mo:零, emptyStr:”, 阵列:[1,2,3], emptyArr: [] ); 让诺布= _。omitBy (fields, v = > (_ isBoolean (v) | | _ isFinite (v)) ?伪造:_.isEmpty(v); 游戏机。log (nobj); < script src =“https://cdn.jsdelivr.net/npm/lodash@4。11月17日/ lodash min。主持人" > / < script >

对于深嵌套对象,您可以使用我的代码片段为lodash > 4

const removeObjectsWithNull = (obj) => {
    return _(obj)
      .pickBy(_.isObject) // get only objects
      .mapValues(removeObjectsWithNull) // call only for values as objects
      .assign(_.omitBy(obj, _.isObject)) // save back result that is not object
      .omitBy(_.isNil) // remove null and undefined from object
      .value(); // get value
};

如果您不想删除假值。这里有一个例子:

obj = {
  "a": null,
  "c": undefined,
  "d": "a",
  "e": false,
  "f": true
}
_.pickBy(obj, x => x === false || x)
> {
    "d": "a",
    "e": false,
    "f": true
  }