【问题标题】:Filtering array of objects by removing unwanted nested object properties通过删除不需要的嵌套对象属性来过滤对象数组
【发布时间】:2018-05-28 12:19:25
【问题描述】:

我有一个包含工作日对象的数组,我想通过“opens”或“closes”中包含 null 的元素过滤这些对象(不希望它们在我的最终数组中存在)。

let array = [
             [
               {"weekday":1,"opens":"09:00","closes":"11:00"}, 
               {"weekday":1,"opens":null,"closes":null}
             ],
             [
               {"weekday":2,"opens":"09:00","closes":"11:00"}, 
               {"weekday":2,"opens":"12:30","closes":"17:00"},
               {"weekday":2,"opens":"18:00","closes":"null"}
             ], ...
           ]

我想返回一个新创建的数组,这样我就不会更改原始数组。

我目前的解决方案看起来像那样,但感觉很难看

let newArray = [];

array.forEach( (day, index)  => {
    day = day.filter( timeblock => 
       timeblock.opens != null && timeblock.closes != null
    );
    newArray.push(day);
});

如何更优雅地过滤嵌套数组? (如果需要,jsfiddle:https://jsfiddle.net/2jukvsoy/1/

【问题讨论】:

  • 你的代码有什么问题?

标签: javascript arrays object filter


【解决方案1】:
let newArray = array.map(day => 
    day.filter(timeblock => 
        timeblock.opens != null && timeblock.closes != null
    )
);

【讨论】:

    猜你喜欢
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 2018-06-02
    相关资源
    最近更新 更多