代码之家  ›  专栏  ›  技术社区  ›  Stéphane GRILLON

如何根据特定属性在数组中查找特定的值元素?

  •  1
  • Stéphane GRILLON  · 技术社区  · 5 年前
    var attributeList = [];
    
    var attributeEmail = {
        Name : 'email',
        Value : 'email@mydomain.com'
    };
    var attributePhoneNumber = {
        Name : 'phone_number',
        Value : '+15555555555'
    };
    attributeList.push(attributeEmail);
    attributeList.push(attributePhoneNumber);
    

    结果是:

    Attributes: Array(2)
    1: {Name: "phone_number", Value: "+15555555555"}
    2: {Name: "email", Value: "email@mydomain.com"}
    

    我需要在中查找电子邮件 attributeList

    var email = getEmail(attributeList);
    console.log(email); // email@mydomain.com
    
    private getEmailAttribute(attributeList) {
        // Name: "email"...
        return ????;
    }
    
    3 回复  |  直到 5 年前
        1
  •  1
  •   Nick Parsons Felix Kling    5 年前

    你可以使用 .find 具有 destructuring assignment 获取具有 Name 电子邮件。然后,一旦检索到对象,就可以使用 .Value 财产。

    见下例:

    function getEmailAttribute(attributeList) {
      return attributeList.find(({Name}) => Name === "email").Value;
    }
    
    var attributeList = [{Name: 'email', Value: 'email@mydomain.com'},{Name: 'phone_number', Value: '+15555555555'}];
    console.log(getEmailAttribute(attributeList));

    作为旁注。要在javascript中声明函数,不使用 private 关键字。相反,您可以使用 function 我上面有个关键词。

        2
  •  3
  •   jo_va    5 年前

    您可以使用 filter() , map() shift() . 这种方法是安全的,它 不会投掷 并将返回 undefined 如果找不到电子邮件对象。

    const attributeList = [];
    
    const attributeEmail = {
      Name : 'email',
      Value : 'email@mydomain.com'
    };
    const attributePhoneNumber = {
      Name : 'phone_number',
      Value : '+15555555555'
    };
    attributeList.push(attributeEmail);
    attributeList.push(attributePhoneNumber);
    
    function getEmailAttribute(attributes) {
        return attributes
          .filter(attr => attr.Name === 'email')
          .map(attr => attr.Value)
          .shift();
    }
    
    const email = getEmailAttribute(attributeList);
    console.log(email);
        3
  •  1
  •   Maheer Ali    5 年前

    使用 Array.prototype.find() 得到 object 谁的 Name = "email" 然后 return 它的 Value .

    var attributeList = [];
    
    var attributeEmail = {
        Name : 'email',
        Value : 'email@mydomain.com'
    };
    var attributePhoneNumber = {
        Name : 'phone_number',
        Value : '+15555555555'
    };
    attributeList.push(attributeEmail);
    attributeList.push(attributePhoneNumber);
    
    function getEmailAttribute(list){
      let obj = list.find(item=> item.Name === "email")
      return obj && obj.Value;
    }
    let email = getEmailAttribute(attributeList);
    console.log(email);