¿cómo puedo verificar si existe una matriz específica, y si no se creará?javascript: compruebe si existe una matriz; si no, créela
Respuesta
Si desea comprobar si existe una matriz x, y crearlo si no lo hace, puede hacerlo
x = (typeof x != 'undefined' && x instanceof Array) ? x : []
Puede utilizar el typeof
operator para la prueba de indefinido y la instanceof
operator para probar si se trata de una instancia de matriz:
if (typeof arr == "undefined" || !(arr instanceof Array)) {
var arr = [];
}
Si estamos hablando de un entorno de navegador a continuación, todas las variables globales son miembros del objeto ventana Así que para comprobar:
if (window.somearray !== undefined) {
somearray = [];
}
Lo siento, mala respuesta. Ver la respuesta de Gumbo para un mejor código. – slebetman
var arr = arr || [];
Pero esto no comprueba si * arr * es una matriz. – Gumbo
Tienes razón. No quedó claro a partir de la pregunta si es necesario verificar que se trataba de una matriz por adelantado, o simplemente verificar si la variable ya está definida. Este es un modismo común, y es más corto y más simple que los otros publicados, así que pensé que lo publicaría y dejaría que el interrogador decidiera si era suficiente. –
Si 'arr' ya está definido en el ámbito correspondiente, entonces ¿por qué molestarse con' var ... '? Puedes hacer 'arr = arr || []; ' – James
Si desea comprobar si el el objeto ya es una matriz, para evitar la well known issues del operador instanceof
cuando se trabaja en entornos multi-enmarcado DOM, se puede utilizar el método de Object.prototype.toString
:
arr = Object.prototype.toString.call(arr) == "[object Array]" ? arr : [];
let list = Array.isArray(x) ? x : [];
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray
O si var x podría ser una matriz y que desea asegurarse de que es uno:
let list = [].concat(x);
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat
Lanza 'x no está definido' en ambos casos –
'x' es la variable que podría ser una matriz o no. Tú defines eso. Este es solo un código de ejemplo ... – mynameistechno
- 1. Compruebe si existe tabla
- 2. Compruebe si existe una entrada de formulario
- 3. Compruebe si existe un div y redirija si no
- 4. Compruebe si existe una inclusión (o requiere)
- 5. BASH - Compruebe si existe PID
- 6. Compruebe si existe una tabla SQL
- 7. jQuery: compruebe si existe imagen
- 8. Compruebe si una variable es una matriz
- 9. NSMutableArray compruebe si el objeto ya existe
- 10. javascript: defina una variable si no existe
- 11. Compruebe si una matriz está vacía
- 12. Compruebe si existe el método jQuery
- 13. Compruebe si existe script Javascript en la página
- 14. Rieles I18n, compruebe si existe traducción?
- 15. Cakephp: compruebe si existe elemento de vista
- 16. Compruebe si existe un directorio en PHP
- 17. Compruebe si existe un objeto en VBScript
- 18. MySql php: compruebe si Row existe
- 19. PDO/PHP - Compruebe si existe fila
- 20. Boost PropertyTree: compruebe si existe el niño
- 21. Hibernar: compruebe si existe el objeto
- 22. Compruebe si existe la clave de registro
- 23. JavaScript si var existe
- 24. Compruebe si existe un nodo en h5py
- 25. Compruebe si existe un artículo sin un error si no existe
- 26. Crear una cookie si (y sólo si) no existe ya
- 27. C compruebe si el archivo existe
- 28. Compruebe si existe una identificación DIV con JQuery
- 29. Compruebe si existe un servicio web
- 30. compruebe si el archivo existe en php
Esto funciona en la mayoría de los casos, pero no te cubrirá si planeas consultar una matriz instanciada de un constructor 'Array' global distinto; esto podría ocurrir al crear scripts en marcos. – James
Eso es verdad. ¿Cómo manejaría uno ese caso? – Rich
@ Rich: vea mi respuesta aquí: http://stackoverflow.com/questions/1961528/javascript-check-if-array-exist-if-not-create-it/1961653#1961653, se comportará correctamente en multi- entornos DOM enmarcados. – CMS