Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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.
Ответить с цитированием
  #2 (permalink)  
Старый 26.04.2012, 09:58
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

https://developer.mozilla.org/en/Jav...cts/Array/sort
Ответить с цитированием
  #3 (permalink)  
Старый 26.04.2012, 10:21
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Array/sort
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #4 (permalink)  
Старый 26.04.2012, 11:13
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

уроки информатики в школе проходили?
сортировки писали?
вот там, где в сортировках было написано что-то вроде
if(arr[i] < arr[j]) {//.....

можно написать
if(func(arr[i], arr[j])) {//.....

Где func - ваша функция сравнения.
и с этого момента можно сравнивать не только числа, но и что угодно, если есть нужная функция сортировки сравнения.

Последний раз редактировалось Gvozd, 26.04.2012 в 11:42.
Ответить с цитированием
  #5 (permalink)  
Старый 26.04.2012, 11:35
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от Gvozd
если есть нужная функция сортировки
Скорее, функция сравнения.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #6 (permalink)  
Старый 26.04.2012, 11:43
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от trikadin
Скорее, функция сравнения.
так и есть - опечатался
Ответить с цитированием
  #7 (permalink)  
Старый 26.04.2012, 11:54
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

А, бывает)
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #8 (permalink)  
Старый 01.05.2012, 21:13
Аспирант
Отправить личное сообщение для Questioner Посмотреть профиль Найти все сообщения от Questioner
 
Регистрация: 03.02.2011
Сообщений: 80

Случайная сортировка:
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));
Ответить с цитированием
  #9 (permalink)  
Старый 01.05.2012, 21:21
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Questioner
Случайная сортировка:
откуда блять такие мудаки берутся?
а) ваш пост вообще тут не в тему. тут спрашивают и обсуждают вовсе не об этом
б) ваша "случайная" сортировка - херня на постном масле, и никуда не годится
http://alljs.ru/articles/array/sort#shuffle
Случайная пересортировка массива
Ответить с цитированием
  #10 (permalink)  
Старый 29.09.2012, 10:40
Новичок на форуме
Отправить личное сообщение для mnavalny Посмотреть профиль Найти все сообщения от mnavalny
 
Регистрация: 26.04.2012
Сообщений: 5

Появился второй вопрос. В первом посте.
Спасибо всем за ответы.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посоветуйте книгу по Ext Core, плиз stanand ExtJS 2 01.08.2011 02:01
Объясните код плиз! unlike777 Общие вопросы Javascript 15 03.05.2011 22:46
ява скрипт Люди подскажите Плиз ArtMain Работа 4 19.01.2011 06:54
Объясните пожалуйста значение символов после переменной Анатолий Общие вопросы Javascript 1 09.01.2009 03:50
Объясните код! Макс Общие вопросы Javascript 1 19.07.2008 23:24