Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.07.2022, 21:03
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

Класс, который хранит в себе данные о заказе
Помогите плз. Как сделать корректно чтобы при создании заказа генерировался id заказа и чтобы логика метода confirmOrder и метода isValidType была корректной?
Метод confirmOrder должен проставлять ордер в статус confirmed = true (если заказ не был подтвержден раньше) и дату конфирма ставить в текущую.
Метод isValidType должен принимать только два значения Buy, Sell - метод возвращает true, если это требование выполняется, и false если нет.
Мой код:

class Order {
  confirmed = false;
  id = Math.floor(Math.random() * 100);
  dateCreated = new Date();
  dateConfirmed;
  constructor(price, city, type) {
    this.price = price;
    this.city = city;
    this.type = type;
  }
  checkPrice() {
    if (this.price > 1000) {
      return true;
    }
    return false;
  }
  confirmOrder() {
    if (this.confirmed == false) {
      this.confirmed = true;
    }

    this.dateConfirmed = new Date();
  }

  isValidType() {
    if (this.type == false) {
      return 'Buy';
    }
    return 'Sell';
  }
}
Ответить с цитированием
  #2 (permalink)  
Старый 04.07.2022, 21:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

NovichokJS,

confirmOrder() {
    if (!this.confirmed) {
    this.confirmed = true;
    this.dateConfirmed = new Date();
      }
  }

  isValidType() {
     return ['Sell', 'Buy'].includes(this.type);
  }
Ответить с цитированием
  #3 (permalink)  
Старый 04.07.2022, 21:32
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

спасибо, а как корректно id заказа прикрутить в код? то, что я написал id = Math.floor(Math.random() * 100); - это неверно. Это должен быть наверно рандомное число от 1 до бесконечности и чтобы при новом заказе id не повторился
Ответить с цитированием
  #4 (permalink)  
Старый 04.07.2022, 21:42
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,742

Сообщение от NovichokJS
спасибо, а как корректно id заказа прикрутить в код? то, что я написал id = Math.floor(Math.random() * 100); - это неверно. Это должен быть наверно рандомное число от 1 до бесконечности и чтобы при новом заказе id не повторился
Можно использовать Date.now(); - У всех заказов, поступивших не в одну и ту же милисекунду будет разный id. Если есть вероятность, что в одну ms поступит несколько заказов, тогда
Date.now()*100 + Math.floor(Math.random() * 100)
Ответить с цитированием
  #5 (permalink)  
Старый 04.07.2022, 21:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Сообщение от NovichokJS
чтобы при новом заказе id не повторился
сделайте счётчик или так ...
id = self.crypto.randomUUID();
Ответить с цитированием
  #6 (permalink)  
Старый 04.07.2022, 22:09
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

Сообщение от рони Посмотреть сообщение
сделайте счётчик или так ...
id = self.crypto.randomUUID();
ого, такого я не проходил еще. А вот так корректно? или как лучше?

class Order {
  confirmed = false;
  dateCreated = new Date();
  dateConfirmed;
  id;
  constructor(price, city, type) {
    this.price = price;
    this.city = city;
    this.type = type;
  }
  checkPrice() {
    if (this.price > 1000) {
      return true;
    }
    return false;
  }
  confirmOrder() {
    if (!this.confirmed) {
      this.confirmed = true;
      this.dateConfirmed = new Date();
      this.id = Math.floor(Math.random() * 100);
    }
  }

  isValidType() {
    return ['Sell', 'Buy'].includes(this.type);
  }
}
Ответить с цитированием
  #7 (permalink)  
Старый 04.07.2022, 22:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

NovichokJS,
вам виднее когда нужен id
Ответить с цитированием
  #8 (permalink)  
Старый 04.07.2022, 22:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

NovichokJS,
let count = 0;
class Order {
  confirmed = false;
  dateCreated = new Date();
  dateConfirmed;
  id = count++;
Ответить с цитированием
  #9 (permalink)  
Старый 04.07.2022, 22:44
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

Сообщение от рони Посмотреть сообщение
NovichokJS,
let count = 0;
class Order {
  confirmed = false;
  dateCreated = new Date();
  dateConfirmed;
  id = count++;
Нужно в рамках класса. Как правильно вообще сгенерировать рандомно id при создании заказа? и чтобы у него был тип данных String?

Последний раз редактировалось NovichokJS, 04.07.2022 в 22:49.
Ответить с цитированием
  #10 (permalink)  
Старый 05.07.2022, 00:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Сообщение от NovichokJS
чтобы у него был тип данных String?

alert(typeof self.crypto.randomUUID() );
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Класс который проверяет значение gunner17 Общие вопросы Javascript 1 29.03.2019 08:26
Код, который гуляет сам по себе Радиойод Общие вопросы Javascript 4 25.10.2017 13:21
Жук который ползает. Усовершенствование Bond Общие вопросы Javascript 34 17.05.2016 20:04
Всем привет. Скрипт который сравнивает данные сайта с данными в базе.. strengerst Opera, Safari и др. 6 24.06.2012 22:17
как получить себе данные с другой страницы? DemonStore Общие вопросы Javascript 4 10.05.2011 17:52