Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用lodash过滤器从值未定义的javascript对象中删除属性?_Javascript_Filter_Lodash - Fatal编程技术网

如何使用lodash过滤器从值未定义的javascript对象中删除属性?

如何使用lodash过滤器从值未定义的javascript对象中删除属性?,javascript,filter,lodash,Javascript,Filter,Lodash,我正在尝试将以下代码转换为使用lodash uz.filter的代码 var substitutionValues = { one: "hi", two: undefined, three: 3}; var keys = _.keys(substitutionValues); for (var i = 0; i < keys.length; i++) { if (substitutionValues[keys[i]] === undefined) { delete subst

我正在尝试将以下代码转换为使用lodash uz.filter的代码

var substitutionValues = { one: "hi", two: undefined, three: 3};
var keys = _.keys(substitutionValues);

for (var i = 0; i < keys.length; i++) {
  if (substitutionValues[keys[i]] === undefined) {
    delete substitutionValues[keys[i]];
  }
}

// => { one: "hi", three: 3 }
var-substitutionValues={1:“嗨”,2:未定义,3:3};
var keys=u0.keys(替换值);
对于(变量i=0;i{1:hi,3:3}
请注意,我不想使用lodash的u.reduce、u.pick或u.omit。

可以用作对象的过滤器。由于
..pickBy()
的默认谓词是
..identity
,因此它将过滤任何falsy值(第一个示例)。如果希望更具体,请相应地定义回调(第二个示例):

var-substitutionValues={1:“嗨”,2:未定义,3:3,4:null};
/**第一个例子**/
var widthoutAllFalsyValues=u0.pickBy(替换值);
console.log(widthoutAllFalsyValues);
/**第二个例子**/
var widthoutUndefined=u.pickBy(替换值,u.negate(u.isUndefined));
console.log(widthoutUndefined)

您可能需要签出
pickBy
。可以在迭代对象属性时指定条件,并使用该条件筛选未定义的键。这对于Filteral来说是一个糟糕的用例,所以请查看这个相关的stackoverflow帖子:@MarcinMalinowski我意识到这不是一个好的用例,但尽管如此,我还是想知道如何做到这一点。我已经知道lodash的pickBy和omitBy了。