Si bien la interfaz del método .map()
es .map(callback(index, domElement))
, es $.map(array, callback(elementOfArray, indexInArray))
para $ .map() ... ¿Alguna idea sobre el motivo por el que $ .map() elige colocar los argumentos devueltos en un orden como valor-índice?
Respuesta
Si se estudia la API de jQuery se dará cuenta de que todos los métodos que funcionan en un conjunto de elementos seleccionados y aceptan devoluciones de llamada, tales como .each
, .html
, .text
, etc., todos pasan el índice del elemento como primer argumento, es decir, .map
está en línea aquí. Normalmente se accede al elemento actual con this
dentro de la devolución de llamada, este es solo un patrón común en jQuery, por lo que los desarrolladores podrían haber decidido que es más importante tener el índice como primer argumento.
Por otro lado, el método nativo Array.prototype.map
pasa el valor del elemento como primer argumento de la devolución de llamada, por lo que parece tener sentido que $.map
funciona de la misma manera, ya que se supone proceso de un conjunto genérico de artículos.
Suena como una explicación válida =) – Kay
Porque la API es imperfecta. Comenzó inconsistente, pero arreglarlo ahora rompería el código existente que usa $.map()
.
- http://bugs.jquery.com/ticket/5686: "No hay manera de solucionar este problema y mantener la compatibilidad hacia atrás."
- http://bugs.jquery.com/ticket/7008: "Los argumentos están invertidos, pero se rompería una gran cantidad de código para cambiarlo".
Lo intrigado mí es que esto no parece como una cosa difícil de hacer desde el primer lugar. – Kay
Es cierto, pero ni siquiera se agregaron en la misma versión de jQuery. '$ .map()' se agregó en v1.0, pero '.map() 'no se agregó hasta v1.2. La moraleja de la historia es que un buen diseño de API es muy difícil, y el diseño de API perfecto es prácticamente imposible. –
Sí, existe una diferencia entre jQuery(). Map() y jQuery.map().
esbozar algunas diferencias:
jQuery.map() = esto tiende a iterar sobre la colección genérica
() Mapa() = objetos Array-como debe ser echado a las matrices de jQuery . (.makeArray())
jQuery.map() = predominantemente utilizado para obtener o establecer el valor de una colección de elementos y devolver que new array
También .map() es una función ECMAScript5, y se define fuera de jQuery (aunque está implementado). Uno se pregunta si jQuery(). Map() era una implementación más antigua. .map() es aparentemente más rápido!
John Resig afirma: "jQuery.map está diseñado principalmente para ser utilizado con matrices de elementos DOM (como se describe en la documentación) .Por esta razón, hace cosas como quitar null/undefined y apila arreglos de nodos en una sola matriz ". Esto es como se define en ECMA (Mozilla). La otra implementación es el propio de Resig, de ahí la diferencia. Eso no es un diseño pobre !!!!!! Read
Segunda razón: "No es tan simple como 'fijación' ... de devolución de llamada de jQuery.map tiene orden parámetro que coincide con Array.prototype.map, mientras que el fin de parámetro jQuery.fn.map juego el resto del jQuery objeto iterator callback param order.El cambio a una u otra rompería la compatibilidad hacia atrás, lo que jQuery toma grandes esfuerzos para evitar" Read
- 1. jQuery map contra cada
- 2. JQuery map vs Javascript map vs For-loop
- 3. Google map + jQuery: error de representación
- 4. ¿Cuál es la diferencia entre $ .map y $ .grep en jQuery
- 5. Themathic map/choropleth map of the Netherlands
- 6. std :: map insert o std :: map find?
- 7. Diferencia entre HashMap y Map en Java ...?
- 8. Arduino map() method - why?
- 9. Jackson: deserialización de Map
- 10. Excepción al cargar el diseño: java.util.LinkedHashMap.eldest() Ljava/util/Map $ Entry;
- 11. Territory Map Generation
- 12. MATLAB heat map
- 13. Tool to Map # include's
- 14. Map Reducir marcos/Infraestructura
- 15. ¿Tiene Mongoid Map/Reduce?
- 16. Drupal Site Map Module
- 17. stl map performance?
- 18. Hadoop Map Reduce: Algorithms
- 19. Clickable Image Map C#
- 20. Sum over Haskell Map
- 21. Javascript world map
- 22. Haskell mutable map/tree
- 23. Google Map GEO Results
- 24. Java Ordered Map
- 25. Hash Map en Python
- 26. Clojure map-longest
- 27. Pantalla completa Google Map
- 28. Liquid Template Map Filter
- 29. C + + Thread-Safe Map
- 30. java map concurrent update
También vale la pena señalar que' .map' aplana implícitamente matrices anidadas también. – Esailija