Angular 7 и Objects ищут, как найти строгие значения - PullRequest
0 голосов
/ 07 декабря 2018

Я ищу значение yes в поле hhead объекта, возвращаемого с сервера:

Object.keys(this.data).forEach(key => {
    if (this.data[key].hhead === 'yes') {
    console.log('Yes '+(this.data[key].hhead === 'yes'))
    this.snackBar.open('This household already have ' + this.data[key].far + ' ' + this.data[key].lar + ' (id: ' + this.data[key].iid + ' ) as a head of household', 'Close', {
        panelClass: 'error'
    });
    }
    else {
    console.log('No '+(this.data[key].hhead === 'no'))
    if (data['age'] <= 17 && data['age'] < this.maxAge && (selectedFr == "Head Of Household")) {

        let message = 'This individual is not the oldest in his family to be the head of household. Do you want to complete this action ?';
        this.openDialog(message, updateType, ind_id, newSts, newMs, newFr, newHH, oldHH, missingData);
    }
    }
});

Проблема с этим сценарием заключается в том, что if и elseэто правда.Таким образом, оба сценария будут выполняться.

Причина в том, что при первом условии, когда оно находит значение yes, условие становится истинным.

И второе, когда оно находит no он будет работать.

Массив выглядит так:

enter image description here

Так что мне нужно , если только массивсодержит no во всех строках для запуска части else.И если он найдет по крайней мере yes для выполнения первого условия.

1 Ответ

0 голосов
/ 07 декабря 2018

Я думаю, что вы пытаетесь атаковать проблему под неправильным углом.Сначала вы должны отсканировать коллекцию, а затем выполнить код:

var mached = this.data.every(t => t.hhead == 'yes'); //this will print true

Object.keys(this.data).forEach(key => {
    if (mached) {
        console.log('Yes '+(this.data[key].hhead === 'yes'))
        this.snackBar.open('This household already have ' + this.data[key].far + ' ' + this.data[key].lar + ' (id: ' + this.data[key].iid + ' ) as a head of household', 'Close', {
           panelClass: 'error'
        });
    } else {
        console.log('No '+(this.data[key].hhead === 'no'))
        if (data['age'] <= 17 && data['age'] < this.maxAge && (selectedFr == "Head Of Household")) {

        let message = 'This individual is not the oldest in his family to be the head of household. Do you want to complete this action ?';
        this.openDialog(message, updateType, ind_id, newSts, newMs, newFr, newHH, oldHH, missingData);
    }
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...