Фильтрация массива объектов путем удаления нежелательных свойств вложенных объектов - PullRequest
0 голосов
/ 28 мая 2018

У меня есть массив, который содержит объекты дней недели, которые я хочу отфильтровать по элементам, которые содержат ноль в «открывает» или «закрывает» (не хочу, чтобы они существовали в моем конечном массиве).

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/)

Ответы [ 2 ]

0 голосов
/ 28 мая 2018
let newArray = array.map(day => 
    day.filter(timeblock => 
        timeblock.opens != null && timeblock.closes != null
    )
);
0 голосов
/ 28 мая 2018

Не так много, но, возможно, вы могли бы использовать карту вместо forEach

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"}
             ]
           ]

const newArray = array.map(day => {
    return day.filter(timeblock => timeblock.opens && timeblock.closes);
});

console.log(newArray)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...