我有一个事件数组和另一个团队数组,我需要按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参数,并在第一行中将其替换为实际的字符串。

09-13 10:48