En javascript (guión bajo), ¿cómo puedo comprobar si una lista de números ya está ordenada o no?Compruebe si una lista está ordenada en javascript con underscore.js
Respuesta
Puede utilizar _.every
para comprobar si todos los elementos están en orden:
_.every(arr, function(value, index, array) {
// either it is the first element, or otherwise this element should
// not be smaller than the previous element.
// spec requires string conversion
return index === 0 || String(array[index - 1]) <= String(value);
});
hay un tipo que puede manejar los valores 'NaN', luego se puede usar su comparador. – Pointy
@Pointy: estoy leyendo las especificaciones y parece que en el caso de 'NaN', se usa su representación de cadena. No es solo '<=' por desgracia. Voy a editar – pimvdb
Resultó no ser mucho más complicado de hecho. – pimvdb
Una solución sencilla sería la de repetir simplemente sobre la lista, examinando si cada elemento es más pequeño que su vecino siguiente:
function is_sorted(arr) {
var len = arr.length - 1;
for(var i = 0; i < len; ++i) {
if(arr[i] > arr[i+1]) {
return false;
}
}
return true;
}
var last = undefined,
sorted = true;
_.forEach(arr, function(val) {
if(last !== undefined && val < last) sorted = false;
last = val;
});
alert(sorted);
Encontré esto muy útil link.
/*
* check the array is sorted
* return: if sorted in ascending -> 1
* if sorted in descending -> -1
* not sorted -> 0
*/
Array.prototype.isSorted = function() {
return (function(direction) {
return this.reduce(function(prev, next, i, arr) {
if (direction === undefined)
return (direction = prev <= next ? 1 : -1) || true;
else
return (direction + 1 ?
(arr[i-1] <= next) :
(arr[i-1] > next));
}) ? Number(direction) : false;
}).call(this);
}
var arr = [3,2,1,0];
arr.isSorted(); // Will return -1
He encontrado la solución en JS puro con cada :
//Array is sorted
[1, 2, 3].every((item, i, arr) => i < arr.length - 1 ? arr[i] < arr[i + 1] : arr[i]); //true
[3, 2, 1].every((item, i, arr) => i < arr.length - 1 ? arr[i] < arr[i + 1] : arr[i]); //false
//Equolent
[1, 2, 3].every((item, i, arr) => i > 0 ? arr[i] > arr[i - 1] : arr[i] < arr[i + 1]); //true
- 1. ¿Cómo determinar si una lista está ordenada en Java?
- 2. ¿Cómo puedo verificar si una lista está ordenada?
- 3. Compruebe si algo no está en una lista en Python
- 4. Compruebe si el objeto está en una lista de objetos
- 5. Compruebe si Javascript está habilitado (Serverside) con Rails
- 6. Probar una lista está ordenada en el orden correcto capybara
- 7. Compruebe si OpenCV está compilado con TBB
- 8. ¿Buscar en una lista ordenada?
- 9. Compruebe si una matriz está vacía
- 10. ¿Cómo aleatorizar una lista ordenada?
- 11. Compruebe si una tecla está abajo con Qt
- 12. compruebe si NSNumber está vacío
- 13. Compruebe si una cadena comienza con http utilizando Javascript
- 14. Compruebe si "exec" está deshabilitado
- 15. Cómo puedo recibir una notificación si una columna DataGrid está ordenada (y no ordenada)
- 16. ¿Cambiar la numeración en una lista ordenada?
- 17. Django - compruebe si la lista contiene algo en una plantilla
- 18. Compruebe si una lista contiene un valor específico en Clojure
- 19. javascript: compruebe si existe una matriz; si no, créela
- 20. Si hay instrucciones condicionales en Underscore.js
- 21. Compruebe si un elemento está dentro de una secuencia
- 22. Compruebe si el espacio está en una cadena
- 23. Compruebe si una cadena está en un ArrayList de cadenas
- 24. Creación de una lista ordenada al azar de una lista ordenada
- 25. Haskell: Compruebe si el int. Está en una lista de int.
- 26. WP7 compruebe si Internet está disponible
- 27. Compruebe si la cadena está vacía
- 28. AS3: compruebe si un diccionario está vacío
- 29. Compruebe si la consola está presente
- 30. compruebe si la conexión a Internet está disponible con C#
@Esailija estoy tratando de poner en práctica una prueba de unidad como "se debe ordenar la matriz" Si –