Задать вопрос
@33remido

New Map удаляет повторяющиеся элементы?

let newValues = [];
        let objValues = [];
        (function pushToArr(obj, largestNum) {
            let largestBill = largestNum();
            for (let value in objValues) {
                let arr = [];
                arr.push(objValues[value]);
                arr.push(Math.round((objValues[value]/largestBill) * innerHeight));
                newValues.push(arr);
            }
        })(obj, function () {
                for (let value in obj.bills) {
                    objValues.push(obj.bills[value]);
                }
                return Math.max.apply(null, objValues);
            });
        console.log(newValues);
        const canvasMap = new Map(newValues);
        console.log(canvasMap);
        obj.canvasMap = canvasMap;

605b217f9c08f632492532.jpeg
  • Вопрос задан
  • 213 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
lazalu68
@lazalu68
Salmon
Ну потому что вот так вот работает Map. 10005 и 10005 это ведь один и тот же ключ, вот по этому ключу сначала устанавилвается значение 470, а потом... 470. Получается что по ключу 10005 лежит значение 470. Как в объекте например. Собственно Map отличается от объекта тем, что Map может использовать любой другой объект в качестве ключа
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
IonDen
@IonDen
JavaScript developer. IonDen.com
Ну конечно. Смотрите, когда вы используете массив для создания Map в таком виде - первый элемент массива становится ключем, а второй значением.

На выходе получается что-то вроде:
const arr = [
  ['a', 1],
  ['b', 2],
  ['c', 3],
];

const map = new Map(arr);
// Map { 'a' => 1, 'b' => 2, 'c' => 3 }


По этому если вы добавите еще один массив с НЕ уникальным ключем, он перезапишет предыдущее значение
const arr = [
  ['a', 1],
  ['b', 2],
  ['c', 3],
  ['b', 99],
];

const map = new Map(arr);
// Map { 'a' => 1, 'b' => 99, 'c' => 3 }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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