我有一个事件数组和另一个团队数组,我需要按event = team []进行匹配。医疗队。 []。等式并获得与所选团队有关的金额。
多重选择为我提供了这些值:
["Equipo", "Data"]
我必须验证和提取该设备数量的安排是:
[
{
"equipo": [
{
"eq": "Equipo",
"monto": "1000"
} ,
{
"eq": "Data",
"monto": "200,00"
}
] ,
"_id": "5d9eb311efa054e57755842d",
"nombre": "Equipos Médicos",
"__v": 24,
"codigo": "IUYIUEIUG-984729"
} ,
{
"equipo": [
{
"eq": "EM1",
"monto": "10,00"
} ,
{
"eq": "EM2",
"monto": "20,00"
} ,
{
"eq": "EM3",
"monto": "30,00"
}
] ,
"_id": "5da89260ec2d620ab8fae605",
"nombre": "Especialidad 2",
"codigo": "UYTDUWETVUW-87643",
"__v": 1
}
]
它必须导致其数量...
预期结果:
[1000, 200]
在component.ts中尝试代码:
multiEQ(e) {
console.log('e: ', e);
let elementByService = [];
this.equiposMedicosService.getAll().subscribe(em => {
console.log('em: ', em);
em.map(i => {
elementByService.push(i);
});
});
console.log('elementByService: ', elementByService);
}
component.html中的代码:
<div class="container text-theme">
<div class="col-12">
<table class="table table-hover text-theme">
<thead>
<tr>
<th>Acción</th>
<th>Clínica u Hospital</th>
<th>Piso</th>
<th>Consultorio</th>
</tr>
</thead>
<tbody formArrayName="clinica">
<tr *ngFor="let item of resourceForm.get('clinica').controls;let i = index">
<ng-container formGroupName="{{i}}">
<td (click)="deleteClinica(i)">
<i class="fa fa-trash pointer" style="color:red"></i>
</td>
<td>
<nb-select formControlName="clc"
class="w-100"
size="small">
<nb-option *ngFor="let clinica of clinicas" [value]="clinica._id">{{ clinica.nombre }}</nb-option>
</nb-select>
</td>
<td>
<input type="number"
class="form-control text-theme text-right"
formControlName="piso"
min="0"
required/>
</td>
<td>
<input type="text"
class="form-control text-theme text-right"
formControlName="consultorio"
required/>
</td>
</ng-container>
</tr>
<tr>
<td (click)="addClinica()">
<i class="fa fa-plus pointer" style="color:green"></i>
</td>
</tr>
</tbody>
</table>
</div>
</div>
最佳答案
类似以下内容可能会起作用。我没有尝试使其适合Angular。您可以对其进行更改以适合该位置,也可以仅使用适当的参数从Angular对其进行调用。
const getAmounts = (nombre = '', eqs = [], equipos = []) => {
const entry = equipos.find(({nombre: nom}) => nom == nombre) || {}
const equipo = entry.equipo || []
const eqList = eqs.map((eq) => equipo.find(({eq: eq2}) => eq == eq2 ) || {})
return eqList.map(({monto}) => monto)
}
const equipos = [{equipo: [{eq: "Equipo", monto: "1000"}, {eq: "Data", monto: "200, 00"}], _id: "5d9eb311efa054e57755842d", nombre: "Equipos Médicos", __v: 24, codigo: "IUYIUEIUG-984729"}, {equipo: [{eq: "EM1", monto: "10, 00"}, {eq: "EM2", monto: "20, 00"}, {eq: "EM3", monto: "30, 00"}], _id: "5da89260ec2d620ab8fae605", nombre: "Especialidad 2", codigo: "UYTDUWETVUW-87643", __v: 1}]
console .log (getAmounts ('Equipos Médicos', ['Equipo', 'Data'], equipos))
console .log (getAmounts ('Equipos Médicos', ['Data'], equipos))
console .log (getAmounts ('Especialidad 2', ['EM3', 'EM1'], equipos))
console .log (getAmounts ('Especialidad 2', ['EM3', 'EM4', 'EM5'], equipos))
如果您不喜欢缺少条目的
undefined
值,则可以用return eqList.map(({monto}) => monto || '0')
(或选择的任何默认值)替换最后一行。尽管我们可以使用各种Ramda技术来做到这一点,但似乎没有一种比上述更具可读性了。您似乎专注于EquiposMédicos;如果可以对其进行硬编码,则可以删除
nombre
参数,并在第一行中将其替换为实际的字符串。