метод sort не понимаю.
<html> <head> <title>YouCube - The Blog for Cube Puzzlers</title> <script type="text/javascript"> // Blog object constructor function Blog(body, date) { // Assign the properties this.body = body; this.date = date; } // Global array of blog entries var blog = [ new Blog("Got the new cube I ordered. It's a real pearl.", new Date("08/14/2008")), new Blog("Solved the new cube but of course, now I'm bored and shopping for a new one.", new Date("08/19/2008")), new Blog("Managed to get a headache toiling over the new cube. Gotta nap.", new Date("08/16/2008")), new Blog("Found a 7x7x7 cube for sale online. Yikes! That one could be a beast.", new Date("08/21/2008")) ]; // Show the list of blog entries function showBlog(numEntries) { // First sort the blog in reverse chronological order (most recent first) blog.sort(function(blog1, blog2) { return blog2.date - blog1.date; }); // Adjust the number of entries to show the full blog, if necessary if (!numEntries) numEntries = blog.length; // Show the blog entries var i = 0, blogText = ""; while (i < blog.length && i < numEntries) { // Use a gray background for every other blog entry if (i % 2 == 0) blogText += "<p style='background-color:#EEEEEE'>"; else blogText += "<p>"; // Generate the formatted blog HTML code blogText += "<strong>" + (blog[i].date.getMonth() + 1) + "/" + blog[i].date.getDate() + "/" + blog[i].date.getFullYear() + "</strong><br />" + blog[i].body + "</p>"; i++; } // Set the blog HTML code on the page document.getElementById("blog").innerHTML = blogText; } </script> </head> <body onload="showBlog(5);"> <h3>YouCube - The Blog for Cube Puzzlers</h3> <img src="cube.png" alt="YouCube" /> <div id="blog"></div> <input type="button" id="showall" value="Show All Blog Entries" onclick="showBlog();" /> </body> </html> Всем привет. У меня возник вопрос по методу sort вот здесь blog.sort(function(blog1, blog2) { return blog2.date - blog1.date; });: Я понимаю что он делает (сортирует даты по убыванию), но я не понимаю как он это делает. Во первый, что еще за blog1 и blog2 ,что это такое и каким макаром отнимая blog2.date от blog1.date массив сортируется по убыванию, если следовать моей логике результатом такого действия должно быть число, а точнее разница между первой второй датой и первой в миллисекундах. Всем заранее благодарен за помощь. |
pshcolnyy,
может документацию почитать? Цитата:
http://learn.javascript.ru/array-met...тировки |
так что значит это вычетание, и зачем мне это положительное значение, отрицательное если мне только нужно отсортировать значения по убыванию.
Хорошо вот код: function compareNumeric(a, b) { if (a > b) return 1; if (a < b) return -1; } var arr = [ 1, 2, 15 ]; arr.sort(compareNumeric); alert(arr); // 1, 2, 15 он берет 2 значения из массива и сравнивает их если a>b возвращает 1, если наоборот возвращает -1 и как мне это понимать, что мне делать с этими 1 и -1 и это еще не все как из этого выходит это function compareNumeric(a, b) { return a - b; } |
Цитата:
Цитата:
|
Я все равно не понимаю как изменять сортировку .
Вы написали: Ему просто указать надо что больше, а что меньше и то что меньше оно поставит левее в массиве, то что больше правее. И как это указывается. |
просто через условие, например: сначала должны быть строки у которых есть цифры, а потом те у которых их нет
var arr = ["здесь нет цифр","пусто","123","текст с цифрой 1"," 12 людей"," "]; alert(arr); arr.sort(function (a){return /[0-9]/g.test(a) ? -1 : 1}); // сортировка - становим в начало строки в которых есть какие-либо цифры alert(arr); |
я еще то не понял а ты мне такое даешь.
вот функция sort: function compare(x,y) { return x-y; } у меня в книге написано что если значение будет больше нуля то ставиться y перед x , если меньше 0 то x перед y. После выдачи таких фактов ничего не объяснив они меняют функции вместо x - y они ставят y-x т.к нам требуется в программе упорядочить числа по убыванию. Отсюда вопрос вот если значение будет больше нуля то они меняются местами, так всегда или этот факт можно изменить Если так всегда то я начинаю понимать как это работает, точнее принцип работы, то есть пофиг что ты там напишешь все решает результат -1 +1 или 0, в зависимости от этого результата массив перестраивается. |
Цитата:
Указывая -1 ты говоришь, что первое значение после сортировки должно быть левее, а второе правее. Указывая 1 говоришь, что первое значение после сортировки должно быть правее, а второе левее. Указывая 0 говоришь, что ничего двигать не надо. Функция же производящая сортировку работает самостоятельно исходя из этих указании. |
Цитата:
Цитата:
Цитата:
|
спасибо
|
Часовой пояс GMT +3, время: 21:54. |