Цикл разных таблиц в type script

#angular #typescript

#angular #typescript

Вопрос:

У меня есть две таблицы X {n_fnc : number , name : string :, date : Date } и Y{id:number , n_fnc : number , status : String } . Я хочу создать список или таблицу, содержащую только n_fnc из таблицы X, которые имеют статус в таблице Y = «действие». Например, я беру n_fnc из таблицы X и ищу все строки с одинаковым n_fnc в таблице Y, если я обнаруживаю, что все найденные мной строки имеют статус = действие, я добавляю этот n_fnc в таблицу или список, в противном случае я ничего не добавляю.

   n_fncwhohaveallstatusact : number []=[];
this.X.forEach(element => {
    let s= 0;
     let k=0; 
     console.log("element",element  )
     console.log("test")
    this.Y.forEach(org =>{
     if(element.n_fnc=== org.n_fnc){
       if(org.status=='act'){
         s=org.n_fnc
         k=0;
         console.log(s);
       }
       else if(org.status!='act' amp;amp; org.status!=''){

         k=1
       }
       else{
         k=2
       }
     }



    })
    if(k!= (1 || 2 )  ){
     this.n_fncwhohaveallstatusact .push(s)
    }
 

консоль не показывает мне ничего такого, как будто он не зацикливает таблицу X с помощью foreach каких-
либо предложений?

Комментарии:

1. Здесь слишком много всего, что нужно распаковать. То, чего вы на самом деле пытаетесь достичь, мне совершенно непонятно (после многократного прочтения вопроса), но две самые большие проблемы, которые я вижу: 1) вы, похоже, не знаете, как ведут себя асинхронные функции; и 2) if(k!= (1 || 2 ) ) не делает то, что вы думаете, что он делает. Пожалуйста, перефразируйте свой вопрос, укажите ожидаемые входные и выходные данные, а также очистите и отформатируйте свой код. Это почти нечитаемо.

2. @RobbyCornelissen Я обновил сообщение, может быть, теперь все ясно

3. Значит, все соответствующие записи в Y должны иметь статус act ? Или только один из них? Было бы намного проще, если бы вы предоставили образцы данных и ожидаемый результат.

4. все состояния = действие

Ответ №1:

Должен быть в состоянии достичь этого, просто используя map() , filter() и every() :

 const X = [];
const Y = [];

const result = X.map(({n_fnc}) => n_fnc)
                .filter(v => Y.filter(({n_fnc}) => n_fnc === v)
                              .every(({status}) => status === 'act')); 

Комментарии:

1. он ничего не показывает, когда я отображаю результат в журнале консоли

2. См. Пункт 1 моего первого комментария: похоже, вы не знаете, как ведут себя асинхронные функции. Но поскольку это было полностью отредактировано из вашего вопроса, я подумал, что это больше не актуально.

3. Я не знаю, что такое асинхронные функции

4. Итак, какие-либо другие предложения? :/

5. Вам нужно будет изучить асинхронное поведение в JavaScript, в частности RxJS Observable s (то, что вы, похоже, используете). Это не то, что можно объяснить в паре комментариев…