Убегая из вложенных циклов [дубликат]

const httpOptions = {
  headers: new HttpHeaders({
    "Authorization":
   "TOKEN"
    })
};

this.http
  .get("URL"+id, httpOptions) 
  .subscribe(data => {
    this.elementosDatatable = data['body']['list'];
    console.log(this.elementosDatatable);
    this.dtTrigger.next();
  });

Возврат

(2) [{…}, {…}]
0: {id: 1, description: "Test1", check: 1}
1: {id: 2, description: "test2", check: 0}
length: 2
__proto__: Array(0)

В HTML попробуйте

<tr *ngFor="let elementosDatatable of elemento">
                <td>{{elemento.id}}</td>
              </tr>

Но цикл foreach в html не возвращает данные, так что теперь, в чем же ошибка? [115 ]

250
задан Community 23 May 2017 в 02:34
поделиться

5 ответов

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

В сообщение отклонения, г-н van Rossum упоминает, что использовал return, который действительно разумен и что-то, что я должен помнить лично.:)

133
ответ дан unwind 23 November 2019 в 02:55
поделиться
for x in xrange(10):
    for y in xrange(10):
        print x*y
        if x*y > 50:
            break
    else:
        continue  # only executed if the inner loop did NOT break
    break  # only executed if the inner loop DID break

те же работы для более глубоких циклов:

for x in xrange(10):
    for y in xrange(10):
        for z in xrange(10):
            print x,y,z
            if x*y*z == 30:
                break
        else:
            continue
        break
    else:
        continue
    break
650
ответ дан Bob Stein 23 November 2019 в 02:55
поделиться

Если Вы в состоянии извлечь код цикла в функцию, return, оператор может использоваться для выхода из наиболее удаленного цикла в любое время.

def foo():
    for x in range(10):
        for y in range(10):
            print(x*y)
            if x*y > 50:
                return
foo()

, Если трудно извлечь ту функцию, Вы могли бы использовать внутреннюю функцию, как @bjd2385 предполагает, например,

def your_outer_func():
    ...
    def inner_func():
        for x in range(10):
            for y in range(10):
                print(x*y)
                if x*y > 50:
                    return
    inner_func()
    ...
64
ответ дан Mr Fooz 23 November 2019 в 02:55
поделиться

Можно также осуществить рефакторинг код для использования генератора. Но это не может быть решением для всех типов вложенных циклов.

8
ответ дан J S 23 November 2019 в 02:55
поделиться

В данном случае можно объединить циклы с современным Python (3.0 и вероятно 2.6, также) при помощи itertools.product.

я для меня взял это как показывает опыт, если Вы вкладываете слишком много циклов (как в, больше чем 2), Вы обычно в состоянии извлечь один из циклов в другой метод или объединить циклы в один, как в этом случае.

3
ответ дан Tetha 23 November 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: