Ребят, не пойму в чем ошибка. Есть задача на всем известном сайте для изучения JS по организации сортировки объектов в массиве через замыкания. В общем не пойму, почему при обращении к свойству объекта через точку return a.field > b.field ? 1 : -1;
сортировка работает не верно, а через скобки return a[field] > b[field] ? 1 : -1;
верно, хотя название свойства в одно слово без пробелов.
var users = [{
name: "Вася",
surname: 'Иванов',
age: 20
}, {
name: "Петя",
surname: 'Чапаев',
age: 25
}, {
name: "Маша",
surname: 'Медведева',
age: 18
}];
function byField(field){
return function (a, b){
return a[field] > b[field] ? 1 : -1;
}
}
users.sort(byField('name'));
users.forEach(function(user) {
alert( user.name );
}); // Вася, Маша, Петя
users.sort(byField('age'));
users.forEach(function(user) {
alert( user.name );
}); // Маша, Вася, Петя
Как я вижу field
это аргумент функции, он имеет некое значение.
Так вот, когда Вы пишете a[field]
Вы обращаетесь к полю, которое называется так, какое значение находится в переменной field
т.е. например к полю "name"
, а когда пишете a.field
Вы обращаетесь к полю под названием "field"
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Какой самый адекватный и нормальный способ кастомизации select без подключение сторонних библиотек?
Я создаю бота в дискорде, и хочу что бы он в сообщение проверял есть ли там "-", сколько бы я не пытался у меня не получается это сделать
Программа рассчитывает калорийность При клике на чекбоксы срабатывает функция и пишет общую каллорийность и ценуЯ захотел реализовать...
Это можно сделать по разномуНо, все же, какой из нижеперечисленных способов получше с точки зрения читабельности и эффективности? Можете...