Удалите родительский объект, если вложенный объект имеет определенное свойство как false для всех вложенных объектов.

В основном у меня есть следующий массив объектов:

enter image description here

Синие кружки показывают свойство объекта, которое мне нужно проверить.

Если все элементы в свойстве options имеют модель «false», я хочу удалить весь объект из массива.

И если есть ложные и ложные смешанные, я хочу оставить только те, которые имеют истинное значение.

есть идеи как это сделать?

Так в основном потому, что

TheArray[1].options['key1'].model = true;

Я хочу сохранить все это.

Но потому что

TheArray[2].options['key1'].model = false;
TheArray[2].options['key2'].model = false;

Хочу удалить весь TheArray[2]

если TheArray[2] был как ниже;

TheArray[2].options['key1'].model = true;
TheArray[2].options['key2'].model = false;

Я хотел бы оставить только TheArray[2].options['key1'];

Также для этого я использую angular 4.

Любая помощь приветствуется.

Спасибо всем заранее.

0
0
43
1

Ответы 1

Как насчет того, чтобы просмотреть все объекты и оставить тот, который в порядке?

for (var i = 0; i < TheArray.length; i++) {
  let checked = false;
  for (var j = 0; j < TheArray[i].options.length; j++) {
    let _this = TheArray[i].options[j]
    if ( _this.model ) {
      checked = true
      break
    }
  }
  if (!checked){
    // remove it
  }
}

Это не полный ответ. Я имею в виду, что этот алгоритм не удаляет тот, который является ложным, а просто удаляет часть прерывания, добавляет оператор else и удаляет его там.

Спасибо за ответ, но это не совсем то, что мне нужно. Я не хочу использовать циклы for, но forEach в этом случае лучше, так как мне придется передать данные, как только они будут завершены, другой функции, а циклы for этого не делают, они просто запускаются и переходят к следующей строке погода закончилась или нет, но мне нужно дождаться завершения цикла, прежде чем передавать его другой функции

Tunc Gerdan 13.09.2018 23:34

Совершенно неверно ... Вы можете сломать все это или вернуть функцию внутри цикла for, чего вы не можете сделать с помощью .forEach ()

Izio 13.09.2018 23:35

ты меня даже не понял

Tunc Gerdan 13.09.2018 23:38
I'll have to pass the data once it's finished to another function and for loops don't do that это ложь, хотя
Izio 13.09.2018 23:54

Другие вопросы по теме