Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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
Javascript 对对象使用过滤器_Javascript_Functional Programming - Fatal编程技术网

Javascript 对对象使用过滤器

Javascript 对对象使用过滤器,javascript,functional-programming,Javascript,Functional Programming,我有一个只包含简单键值对的对象,我想过滤掉所有具有假值的属性。使用Array.prototype.filter()是否可以实现这一点 使用Array.prototype.filter()是否可以实现这一点 可以,但不能直接执行:您可以在使用对象后执行此操作。键或类似键: var arrayOfTruthyValues = Object.keys(obj).filter(key => obj[key]); 结果是一个truthy值数组 如果希望最终结果是一个对象,将filter与reduc

我有一个只包含简单键值对的对象,我想过滤掉所有具有假值的属性。使用Array.prototype.filter()是否可以实现这一点

使用Array.prototype.filter()是否可以实现这一点

可以,但不能直接执行:您可以在使用
对象后执行此操作。键
或类似键:

var arrayOfTruthyValues = Object.keys(obj).filter(key => obj[key]);
结果是一个truthy值数组

如果希望最终结果是一个对象,将
filter
reduce
组合可以做到:

var newObj = Object.keys(obj)
    .filter(key => obj[key])
    .reduce((newObj, key) => {
        newObj[key] = obj[key];
        return newObj;
     }, {});
这主要是使用
reduce
作为循环构造(因为我们从来没有实际更改累加器值,我们只是不断返回相同的对象),这有时被认为是一个“abusage.”:-),这意味着我们可以不使用
过滤器
部分,只在
reduce
中放置一个
if
,但是


请注意,
Object.keys
仅包括对象自己的可枚举属性。如果您想要自己的属性,即使它们不可枚举,也可能是
Object.getOwnPropertyNames

使用Array.prototype.filter()是否可以实现这一点

可以,但不能直接执行:您可以在使用
对象后执行此操作。键
或类似键:

var arrayOfTruthyValues = Object.keys(obj).filter(key => obj[key]);
结果是一个truthy值数组

如果希望最终结果是一个对象,将
filter
reduce
组合可以做到:

var newObj = Object.keys(obj)
    .filter(key => obj[key])
    .reduce((newObj, key) => {
        newObj[key] = obj[key];
        return newObj;
     }, {});
这主要是使用
reduce
作为循环构造(因为我们从来没有实际更改累加器值,我们只是不断返回相同的对象),这有时被认为是一个“abusage.”:-),这意味着我们可以不使用
过滤器
部分,只在
reduce
中放置一个
if
,但是



请注意,
Object.keys
仅包括对象自己的可枚举属性。如果您想要自己的属性,即使它们不可枚举,也可能是
Object.getOwnPropertyNames

请阅读。关键短语:“搜索、研究”和“解释……任何阻碍你自己解决问题的困难”。请阅读。关键短语:“搜索、研究”和“解释……任何阻碍你自己解决问题的困难”。我们有一个小争论,我期待着你对这件事的意见。谁得到了正确的答案?谁的答案完全错了?如果你能说点什么。。。我们有一个小争论,我期待着你的意见在这种情况下。谁得到了正确的答案?谁的答案完全错了?如果你能说点什么。。。