代码之家  ›  专栏  ›  技术社区  ›  Isaías Orozco Toledo

如何在javascript中为条件赋值

  •  -1
  • Isaías Orozco Toledo  · 技术社区  · 6 年前

    我想根据一个条件给变量赋值, 如果我收到的ID等于数组中的任何ID,

    例如,我有:

    数组:

    {
       key: value,
       key: value,
       direccion:[{
        direccionId: 40,
        calle: "string"
       },{
        direccionId: 41,
        calle: "string2"
       }]
    }
    
    AgregarInfo(direccionId){
            var infoDireccion = this.editedItem.direccion;            
            console.log(direccionId);
            console.log(infoDireccion.some(direccion => direccion.direccionId === direccionId));
            if(infoDireccion.some(direccion => direccion.direccionId === direccionId)){                
                for(var i = 0; i < infoDireccion.length; i++){
                    this.editarCliente.txtCalle = infoDireccion[i].calle;
                }
            }
        } 
    

    在这里,如果我收到40,所有与ID 40匹配的值都会将它们分配给变量。

    我所做的是正确的,还是有别的办法?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Mark    6 年前

    最好用一下 find() 在这种情况下,而不是 some() 然后循环查找项目。用 查找() 你可以在一个步骤中同时做这两件事,条件是 查找() 返回任何内容,值将是找到的项:

    let editedItem = {
        key: 'value',
        otherkey: 'value',
        direccion:[{
         direccionId: 40,
         calle: "string"
        },{
         direccionId: 41,
         calle: "string2"
        }]
     }
     
     function AgregarInfo(direccionId){
             var infoDireccion = editedItem.direccion;            
             let found = infoDireccion.find(item => item.direccionId === direccionId)
             let editarCliente = found ? found.calle : undefined
             return editarCliente
    } 
    
    console.log(AgregarInfo(40))
    console.log(AgregarInfo(41))
    console.log(AgregarInfo(42)) // undefined if there's no id 42