Не хватало данного функционала и решил попробовать реализовать.
Зачем нужен Set? По сути это массив, в котором значения не могут повторяться, с помощью метода .has(value) можно узнать, есть ли данное значение в "списке".
Зачем нужен Map? Ну.. По сути этот же объект, но с методом .has(key), который проверяет, находится ли key (ключ) в объекте. Ну и возможностью получить только ключ, только значения ну или массив с массивами [ключ, значение].
/** * Методы: * - add(value) Добавляет 'value' к Set объекту. Возвращает Set объект * - clear() Удаляет все элементы из Set объекта * - delete(value) Удаляет 'value' из Set объекта. Возвращает успешность удаления (true/false) * - has(value) Проверяет, находится ли значение в Set объекте. Возвращает (true/false) * - values() Возвращает все значение из Set объекта * Свойства: * - size Возвращает количество значений в Set объекте */
class Set { __new(arr := "") { this.data := []
for index, value in arr { this.add(value) } }
add(value) { if (!this.has(value)) { this.data.push(value) }
return this }
clear() { this.data := [] }
delete(value) { if (index := this._indeOf(value)) { this.data.delete(index) }
_indeOf(value) { for index, element in this.data { if (value == element) { return index } }
return 0 }
size[] { get { return this.data.count() }
set { return } } }
Код
/** * Методы: * - set(key, value) Добавляет пару ключ-значение. Возвращает Map объект * - clear() Удаляет все пары ключ-значеие из Map объекта * - delete(key) Удаляет 'ключ' из Map объекта. Возвращает успешность удаления (true/false) * - has(key) Проверяет, находится ли ключ в Map объекте. Возвращает (true/false) * - values() Возвращает все значение из Map объекта * - keys() Возвращает все ключи из Map объекта * - entries() Возвращает массив с массивами из [key, value] * Свойства: * - size Возвращает количество пар ключ-значение в Map объекте */
/** * Методы: * - set(key, value) Добавляет пару ключ-значение. Возвращает Map объект * - clear() Удаляет все пары ключ-значеие из Map объекта * - delete(key) Удаляет 'ключ' из Map объекта. Возвращает успешность удаления (true/false) * - has(key) Проверяет, находится ли ключ в Map объекте. Возвращает (true/false) * - values() Возвращает все значение из Map объекта * - keys() Возвращает все ключи из Map объекта * - entries() Возвращает массив с массивами из [key, value] * Свойства: * - size Возвращает количество пар ключ-значение в Map объекте */
class Map { __New(iterable := "") { this.data := {}
for index, data in iterable { this.data[data[1]] := data[2] } }
get(key) { return this.data[key] }
set(key, value) { this.data[key] := value
return this }
has(key) { return this.data[key] ? true : false }
delete(key) { if (isHas := this.has(key)) { this.data.delete(key) }
return isHas }
clear() { this.data := {} }
values() { arr := []
for key, value in this.data { arr.push(value) }
return arr }
keys() { arr := []
for key in this.data { arr.push(key) }
return arr }
entries() { arr := []
for key, value in this.data { arr.push([key, value]) }