Почему сортировка массива срабатывает до его вызова?
Имеется массив объектов, а также кастомная функция для фильтрации его элементов по ключу(параметру функции)
let users = [
{ name: "John", age: 20, surname: "Johnson" },
{ name: "Pete", age: 18, surname: "Peterson" },
{ name: "Ann", age: 19, surname: "Hathaway" }
];
// *1* console.log(users) выдает отсортированный массив
function byField (str){
return function (a,b){
return (a[str] > b[str]) ? 1 : -1 ;
}
}
users.sort(byField("name"));
// *2* console.log(users) выдает отсортированный массив
Вопрос: почему первый лог выводит уже отсортированный массив до вызова метода?
Ответы (1 шт):
Автор решения: Alexey Ten
→ Ссылка
Потому что console.log в браузере «ленивый» и показывает состояние объектов в момент разворачивания, а не момент вывода.
Сделайте, например, console.log(users.slice()) что бы вывести копию массива.