здравствуйте
нужно два отсортированных(один по убыванию другой по возрастанию) массива с объектами в которых {k:“string”, v:результат вызова функции parseFloat(“string”)}.
они должны синхронизироваться с помощью уведомлений.
вижу я что в втором массиве не удаляться ключи.
далее надо суммировать все значения результатa вызова функции parseFloat(“string”).
спасибо
Это не помогло. Я имел в виду что-то вроде “мне нужно добавить элемент в map, я вызываю метод map.insert(/*тут реальный код*/), убедился что код вызывается. Вызываю console.log(map) и не вижу элемента в map”.
Какие именно изменения? В апи библиотеки нет вызова метода insert с первым аргументом функцией. Убедись что “чистый” вызов insert без твоей логики работает с двумя аргументами как этого ожидаешь ты.
И убедись что вообще блок кода в условии if(amount!= 0){ выполняется. Например залогируй значения передаваемых аргументов в this.map.insert.
SortedObjectArray.prototype.insert = function (comparator, element) {
var array = this.array;
var index = array.length;
array.push(element);
while (index) {
var i = index, j = --index;
if (comparator(this.getKey(i), this.getKey(j))) {
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
return this;
};
По коду из тела поста не понятно с каким ключем создан SortedObjectArray. Компаратор работает со значениями этого ключа. Удаляет тоже по значению в этом ключе. Т.е чтобы удаление работало, нужно чтобы значение и тип price в this.map.remove(price) было таким как в ключе, переданным в конструктор SortedObjectArray.
Если предположить что ключ был 'k', тогда компаратор не очень ибо сравнивает строки. Если предположить что ключ 'v', тогда копаратор имеет значение, но удаление не будет работать так как price в this.map.remove(price) - строка.