Новости программирования

Структура данных очереди в JavaScript

Краткое описание по статье Структура данных очереди в JavaScript

Название: Структура данных очереди в JavaScript . Краткое описание: [ad_1] ⭐ Структура данных Да, структура данных. Стру . Дата публикации: 02.02.2022 . Автор: Алишер Валеев .

Для чего создан сайт Novosti-Nedeli.ru

Данный сайт посвящен новостям мира и мира технологий . Также тут вы найдете руководства по различным девайсам.

Сколько лет сайту?

Возраст составляет 3 года

[ad_1]

Структура данных

Да, структура данных. Структура данных в вычислительной технике — это «структура» (расположение и отношения между частями или элементами чего-либо) значений данных, которая описывает отношения, существующие между этими значениями, а также функции или операции, которые могут применяться ко всем или некоторые из этих значений.

Итак, что такое очереди

Что ж, очереди — это тип структуры данных, которая содержит набор данных в линейной/последовательной форме (набор связанных событий, движений или элементов, следующих друг за другом в определенном порядке), где модификация выполняется путем добавления объекты на одном конце последовательности и удаление объектов на другом конце последовательности.

Когда модификация производится путем добавления объектов на одном конце последовательности и удаления объектов на другом конце последовательности.

Это может показаться вам знакомым, если у вас есть базовые знания в области информатики или бухгалтерского учета. Это концепция FIFO (First In First Out).

FIFO в вычислениях и в теории систем — это метод организации манипулирования структурой данных — часто, в частности, буфером данных, — в котором введены первые элементы удаляются первыми.

Практический пример

До сих пор мы говорили только о теоретических определениях. Давайте возьмем магазин пиццы в качестве практической иллюстрации. Que-minos — так называется этот магазин — они делают пиццу. В идеале они принимают и доставляют заказы последовательно по принципу «первым пришел — первым обслужен» (FIFO). Каждый клиент входит, направляется к стойке, размещает заказ и садится ждать, как только первый заказ выполнен, пицца доставлена, а следующая очередь обрабатывается.

1*IaiOUING23BDNdCgtXxdVQ.png

В JavaScript почти очевидно, что очереди должны быть реализованы с использованием объекта Array (массивы — самая надежная структура данных в JavaScript — конечно, это спорно).

Мы будем реализовывать Кеминос класс для представления нашей структуры очереди. Этот класс будет иметь несколько важных методов для:

  • разместить заказ (enqueue): этот метод добавляет новый заказ в список заказов. Также называется Enqueue — добавление (элемента данных, ожидающих обработки) в очередь.
  • доставитьЗаказ (удаление из очереди): этот метод доставляет заказ покупателю после завершения. Он выполняет функцию удаления из очереди, поскольку удаляет элемент из очереди после расчета.
  • следующий: этот метод возвращает следующего клиента, которого следует обслужить после доставки текущего заказа (в идеале этот заказ должен иметь индекс 1).
  • hasOrders: это вспомогательный метод, который позволит Queminos определить, есть ли доступные заказы.
  • заказы: это будет метод получения, этот метод поможет нам увидеть все доступные заказы.

Структура папок

У нас будет простая структура папок, один файл для хранения нашего класса Queminos, другой для импорта и использования класса и еще один для хранения данных заказов.

    |-- Queminos.js
    |-- app.js
    `-- data.json

Кеминос Класс

class Queminos {
  #orders = []

  get orders() {}

  placeOrder(order) {}

  deliverOrder() {}

  upNext() {}

  hasOrders() {}
}

Здесь мы используем объявление класса для создания Кеминос класс. Затем мы объявляем свойство закрытого класса «orders» и устанавливаем значение в пустой массив. В нем будут храниться все заказы, полученные Кеминос.

В ES2019 поля закрытого класса определяются с использованием префикса #: это необходимо, чтобы определенные поля/свойства класса не были изменяемыми или доступными за пределами этого класса (например, из экземпляра класса). Это разработано вокруг идеи инкапсуляции в ООП.

Хорошо, давайте реализуем каждый из методов:

Поскольку мы не можем получить доступ/изменить свойство «orders» вне класса (поскольку оно закрытое), мы реализуем метод получения «orders», который возвращает закрытое свойство «orders».

get orders() {
    return this.#orders
}

Метод placeOrder принимает единственный параметр «заказ» и добавляет его в массив заказов. Это в основном наш метод постановки в очередь.

placeOrder(order) {
    this.#orders.push(order)
}

Метод deliveryOrder, который служит реализацией метода удаления из очереди, удаляет первый элемент в массиве заказов (помните FIFO?). Во-первых, мы используем метод hasOrders, чтобы проверить, есть ли заказы в очереди, прежде чем пытаться их удалить.

deliverOrder() {
  return this.hasOrders() ? this.#orders.shift() : false
}

Вот список практических примеров методов Array в JavaScript:

https://devjavu.space/post/understanding-and-applying-array-methods-in-javascript/

То upNext метод, как упоминалось ранее, возвращает следующий заказ в очереди, к которому необходимо обратиться. Во-первых, нам нужно проверить, есть ли заказы, а затем проверить, есть ли заказ сразу за текущим.

upNext() {
    return this.hasOrders() && this.#orders.length > 1
        ? this.#orders[1]
        : this.#orders[0]
}

Наконец, метод hasOrder просто проверяет наличие заказов в массиве #orders.

hasOrders() {
    return this.#orders.length ? true : false
}

Наш класс Queminos теперь должен выглядеть так:

class Queminos {
  #orders = []

  get orders() {
    return this.#orders
  }

  placeOrder(order) {
    this.#orders.push(order)
  }

  deliverOrder() {
    return this.hasOrders() ? this.#orders.shift() : false
  }

  upNext() {
    return this.hasOrders() && this.#orders.length > 1
      ? this.#orders[1]
      : this.#orders[0]
  }

  hasOrders() {
    return this.#orders.length ? true : false
  }
}

module.exports = Queminos

Обратите внимание, что мы экспортируем класс Queminos, чтобы мы могли использовать его вне этого файла.

Данные

Наши данные JSON довольно просты. Это список полученных заказов в объектном формате. Вы можете сделать это проще и использовать строки, если хотите.

{
  "orders": [
    { "type": "Grand Pizza", "qty": 1, "customer_id": "10_000"},
    { "type": "Queminos Special", "qty": 2, "customer_id": "10_001"},
    { "type": "Grand Pizza", "qty": 3, "customer_id": "10_002"},
    { "type": "Grand Pizza", "qty": 1, "customer_id": "10_003"}
  ]
}

Мы импортируем наш класс в файл app.js, а также наши данные JSON. Отсюда мы можем протестировать нашу систему очередей.

const Queminos = require('./Queminos')
const data = require('./data.json')

const pizzaShop = new Queminos

// place orders
data.orders.forEach(order => pizzaShop.placeOrder(order));

console.log(pizzaShop.deliverOrder()) // dequeue
console.log(pizzaShop.upNext()) // get upnext
console.log(pizzaShop.orders)

Вот и все, практическая реализация очередей в JavaScript.

Вот ссылка на исходный код.

https://github.com/MartinsOnuoha/js-queue-пример

[ad_2]
Source: codementor.io/community/new

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован.

Кнопка «Наверх»