Javascript | Уникальный объект в Set

Теперь он работал для меня, я изменил настройку своей учетной записи google, как показано ниже:

        System.out.println("Start");
        final String username = "myemail@gmail.com";
        final String password = "************";

        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "465");
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

         Session session = Session.getInstance(props,
                  new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(username, password);
                    }
                  });


        try {
            Transport transport=session.getTransport();
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("myemail@gmail.com"));//formBean.getString("fromEmail")
            message.setRecipients(Message.RecipientType.TO,InternetAddress.parse("myemail@gmail.com"));
            message.setSubject("subject");//formBean.getString(
            message.setText("mailBody");
            transport.connect();
            transport.send(message, InternetAddress.parse("myemail@gmail.com"));//(message);

            System.out.println("Done");

        } catch (MessagingException e) {
            System.out.println("e="+e);
            e.printStackTrace();
            throw new RuntimeException(e);

        }

Хотя я включил SSL и TSL во время запуска программы в этой ссылке того же поста. Я провожу много времени, но я понял и нашел эту ссылку. И сделали 2 следующих шага и установили контроль в google. :

  • Отключить двухэтапную аутентификацию (пароль и OTP)
  • Разрешить доступ к менее защищенному приложению (разрешить менее безопасные приложения: ВКЛ.)

Теперь я могу отправлять почту, используя указанную выше программу.

1
задан Ciprian 13 July 2018 в 04:14
поделиться

2 ответа

Возможно, более короткая и, по общему признанию, более ленивая / менее рекомендуемая альтернатива ответа Бена будет использовать JSON для сравнения:

let s = new Set()

arr.forEach(obj => (
    !s.has(JSON.stringify(obj)) && s.add(JSON.stringify(obj))
))

s = new Set([...s].map(o => JSON.parse(o)))

Стоит отметить, что это будет работать, только если ключ -значные пары находятся в одном порядке.

0
ответ дан Felipe Lanza 17 August 2018 в 13:41
поделиться

Объекты передаются по ссылке, а это значит, что если вы добавите их в набор, даже если они будут точно такими же, они не будут одинаковыми, если вы проверите их с помощью ===.

var a = {val1: 'hello', val2: 'there'}
var b = {val1: 'hello', val2: 'there'}
console.log(a === b) // false
console.log(a == b)  // false

Чтобы решить эту проблему, вы можете написать что-то вроде следующего, взятого из этой статьи .

var a = {val1: 'hello', val2: 'there'};
var b = {val1: 'hello', val2: 'there'};

function isEquivalent(a, b) {
  // Create arrays of property names
  var aProps = Object.getOwnPropertyNames(a);
  var bProps = Object.getOwnPropertyNames(b);

  // If number of properties is different,
  // objects are not equivalent
  if (aProps.length != bProps.length) {
    return false;
  }

  for (var i = 0; i < aProps.length; i++) {
    var propName = aProps[i];

    // If values of same property are not equal,
    // objects are not equivalent
    if (a[propName] !== b[propName]) {
      return false;
    }
  }

  // If we made it this far, objects
  // are considered equivalent
  return true;
}

console.log(a === b); // false
console.log(a == b);  // false
console.log(isEquivalent(a, b)); // true

Использование этого алгоритма будет проверять фактические значения объектов, а не ссылки.

console.log(isEquivalent(a, b)) // true
2
ответ дан Karan 17 August 2018 в 13:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: