【问题标题】:How to find specific value element in array by specific attribut?如何通过特定属性在数组中查找特定值元素?
【发布时间】:2019-02-12 11:15:47
【问题描述】:
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 ????;
}

【问题讨论】:

    标签: javascript arrays filter find


    【解决方案1】:

    您可以使用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);

    【讨论】:

      【解决方案2】:

      您可以使用.finddestructuring 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 关键字。

      【讨论】:

        【解决方案3】:

        使用Array.prototype.find() 获取objectName = "email",然后使用returnValue

        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);

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-09-28
          • 2011-12-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-11
          相关资源
          最近更新 更多