Показать сообщение отдельно
  #1 (permalink)  
Старый 26.04.2012, 09:50
Новичок на форуме
Отправить личное сообщение для mnavalny Посмотреть профиль Найти все сообщения от mnavalny
 
Регистрация: 26.04.2012
Сообщений: 5

Array.sort(function). Объясните плиз.
------------------Вопрос №2. Ответ получен------------------------
Ещё раз напоминаю, что я дно в JS, не пинайте меня сильно.
Сейчас читаю Девида Фланагана. И пытаюсь решать примеры из книжки. Вот появлися вопрос.

Задача следующая:
* Copy the enumerable properties of p to o, and return o.
* If o and p have a property by the same name, o's property is left alone.
* This function does not handle getters and setters or copy attributes.

var o = {same: "O obj", name: "O obj", addO: "add_O"};
var p = {same: "P obj", addP: "add_P", name: "P obj"};

function merge(o,p) {
for(prop in p) { // For all props in p.
if (o.hasOwnProperty[prop]) continue; // Except those already in o.
o[prop] = p[prop]; // Add the property to o.
}
return o;
}

console.log (merge(o,p));


Объекты добавил я. Сама функция взята из книжки.
Вопрос: почему property "same" объекта О имеет value объекта Р ?
Тоже самое произойдет и с property "name", если её сделать "name1" для обоих объектов.


------------------Вопрос №1. Ответ получен------------------------
Сразу честно признаюсь - я дно в JS, поэтому если вопрос уже обсуждался 100500 раз - дайте линк, и не закрывайте топик хотя бы дня 3.

var compareStringLength = function (stringone, stringtwo) {
    return stringone.length - stringtwo.length;
};
var myStringArray = ["aaaa","z","xxxxxx","s","helloGYs"];
myStringArray.sort(compareStringLength);
console.log(myStringArray);


Result: [ 'z', 's', 'aaaa', 'xxxxxx', 'helloGYs' ]

То есть у нас массив отсортирован по возростанию кол-ва букв в слове.

Вопрос: объясните как это работает. То что я понимаю сейчас: идёт сортировка с помощью функции которая возвращает результат вычитания 2 значений. Получается она перебирает массив. Но как ?
Идеальный ответ был бы что-то типа:


Цитата:
1. "z" - "s" = 0;
2. 0 записывается в myStringArray[0] на соответствующую позицию. (я понимаю что 0 скорее всего никуда не пишется, но просто хочется понять логику)
3. итд итп

Спасибо.

Последний раз редактировалось mnavalny, 29.09.2012 в 11:05.
Ответить с цитированием