------------------Вопрос №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. итд итп
|
Спасибо.