JavaScript, сортирующий массив смешанных строк и нулевых значений

Для этой операции используйте соединение .

SELECT r.titulo 
 FROM recetas r 
JOIN recetas-categorias rc
ON r.idreceta = rc.idreceta  
JOIN categorias c
ON rc.idcategoria = c.id
AND c.categoria="Internacional"

или

SELECT r.titulo 
FROM recetas r,
     recetas-categorias rc,
     categorias c
WHERE r.idreceta = rc.idreceta  
AND rc.idcategoria = c.id
AND c.categoria="Internacional"

11
задан Marco Demaio 20 May 2010 в 16:23
поделиться

6 ответов

Это будет делать то, что вы хотите, преобразовывая все в строки (в частности, преобразовывая null в пустую строку) и позволяя встроенному в JavaScript сравнению строк выполнять свою работу:

arr2.sort( function(a, b) 
{
    /* 
       We avoid reuse of arguments variables in a sort
       comparison function because of a bug in IE <= 8.
       See http://www.zachleat.com/web/array-sort/
    */
    var va = (a === null) ? "" : "" + a,
        vb = (b === null) ? "" : "" + b;

    return va > vb ? 1 : ( va === vb ? 0 : -1 );
} );
14
ответ дан 3 December 2019 в 02:40
поделиться

мы можем сделать это самый простой путь

sort: (a, b) => {
        a = a.name || '';
        b = b.name || '';
        return a.localeCompare(b);
    }
0
ответ дан 3 December 2019 в 02:40
поделиться
[null, "b", "c", "d", null, "e", 0, "g", null, 0, "h", "i", "l", "m", "n", "o", "p", "ne", "nur", "nimbus"].sort(function (a,b) { 
   return a === null ? -1 : b === null ? 1 : a.toString().localeCompare(b);
});
8
ответ дан 3 December 2019 в 02:40
поделиться

Используйте настраиваемую функцию упорядочивания, которая таким образом обрабатывает нулевые значения.

arr1.sort(function(a, b) {
    if (a===null) a='';
    if (b===null) b='';

    if (''+a < ''+b) return -1;
    if (''+a > ''+b) return  1;

    return 0;
});
1
ответ дан 3 December 2019 в 02:40
поделиться

Браузер делает null.toString(); так как null - это объект, это практически Object.toString()... который вернет "null"

Передайте параметр для сортировки, как вашу функцию сравнения [если функция возвращает что-то большее, чем 0, b сортируется ниже, чем a]

Функция в основном будет такой:

comparisonFunc = function(a, b)
{
 if((a === null) && (b === null)) return 0; //they're both null and equal
 else if((a === null) && (b != null)) return -1; //move a downwards
 else if((a != null) && (b === null)) return 1; //move b downwards
 else{
  //Lexicographical sorting goes here
 }
}
set.sort(comparisonFunc);
-1
ответ дан 3 December 2019 в 02:40
поделиться

Вы можете передать сортировке sortfunction

array.sort(sortfunction)

, где sortfunction выполняет необходимое сравнение (регулярная сортировка с нулевыми значениями больше, чем у других)

-1
ответ дан 3 December 2019 в 02:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: