Как найти конкретный элемент значения в массиве по определенному атрибуту? - PullRequest
0 голосов
/ 12 февраля 2019
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 ]

0 голосов
/ 12 февраля 2019

Используйте 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);
0 голосов
/ 12 февраля 2019

Вы можете использовать .find с деструктурирующим назначением , чтобы получить объект, который имеет 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, как у меня выше.

0 голосов
/ 12 февраля 2019

Вы можете получить электронное письмо, используя 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...