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 значений. Получается она перебирает массив. Но как ? Идеальный ответ был бы что-то типа: Цитата:
Спасибо. |
|
|
уроки информатики в школе проходили?
сортировки писали? вот там, где в сортировках было написано что-то вроде
if(arr[i] < arr[j]) {//.....
можно написать
if(func(arr[i], arr[j])) {//.....
Где func - ваша функция сравнения. и с этого момента можно сравнивать не только числа, но и что угодно, если есть нужная функция |
Цитата:
|
Цитата:
|
А, бывает)
|
Случайная сортировка:
function randsort(arr) {
return arr.sort(function(a, b) {return Math.random() - 0.5});
}
Приер использования:
function randsort(arr) {
return arr.sort(function(a, b) {return Math.random() - 0.5});
}
var a = "abcdefghijklmnopqrstuvwxyz".split("");
alert(randsort(a));
alert(randsort(a));
alert(randsort(a));
|
Цитата:
а) ваш пост вообще тут не в тему. тут спрашивают и обсуждают вовсе не об этом б) ваша "случайная" сортировка - херня на постном масле, и никуда не годится http://alljs.ru/articles/array/sort#shuffle http://javascript.ru/forum/project/2...a-massiva.html |
Появился второй вопрос. В первом посте.
Спасибо всем за ответы. |
| Часовой пояс GMT +3, время: 04:57. |