@AvKa3003

Когда по js коду прохожусь построчно с помощью breakpoitnt — всё нормально, когда запускаю целиком — работает неправильно. Что за дичь?

если что - вот он.
"use strict"
let users = [
{ name: "John", age: 20, surname: "Johnson" },
{ name: "Pete", age: 18, surname: "Peterson" },
{ name: "Ann", age: 19, surname: "Hathaway" }
];

function byField(aName) {
return function (a, b) {
if (a[aName] > b[aName]) {
return 1;
} else {
return -1;
}
}
}

console.log( users.sort(byField('age')) ); //выводит объект отсортированный по age

console.log( users.sort(byField('name')) ); //отсортированный по name

если пройти построчно с помощью breakpoint то всё нормально.
если запустить без breakpoint-ов, то оба вывода отсортированы по name.
запускал в Chrome и Яндекс.
  • Вопрос задан
  • 180 просмотров
Решения вопроса 3
@McBernar
sort мутирует массив.
Поменяйте местами вызовы и получите два массива, отсортированных по age.
Ответ написан
@AvKa3003 Автор вопроса
Проблема была в том что console.log выводит не текст, а ссылку на объект и показывает содержимое объекта не на момент вызова console.log а на момент нажатия на стрелочку"Развернуть". Решение нашел в документации console.log.
Ответ написан
Комментировать
E1ON
@E1ON Куратор тега JavaScript
Programming, Gamedev, VR
const byName = [...users].sort(byField('name'));
const byAge = [...users].sort(byField('age'));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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