#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 (то, что вы, похоже, используете). Это не то, что можно объяснить в паре комментариев…