diff options
Diffstat (limited to 'files/es/web/javascript/referencia/objetos_globales/array')
41 files changed, 0 insertions, 6894 deletions
diff --git a/files/es/web/javascript/referencia/objetos_globales/array/@@iterator/index.html b/files/es/web/javascript/referencia/objetos_globales/array/@@iterator/index.html deleted file mode 100644 index 65ac581204..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/@@iterator/index.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: 'Array.prototype[@@iterator]()' -slug: Web/JavaScript/Referencia/Objetos_globales/Array/@@iterator -tags: - - Array - - ECMAScript 2015 - - Iterator - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@iterator ---- -<div>{{JSRef}}</div> - -<p>El valor inicial de la propiedad <code><strong>@@iterator</strong></code> es el mismo objeto de función que el valor inicial de la propiedad {{jsxref("Array.prototype.values()", "values()")}}.</p> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><code><var>arr</var>[Symbol.iterator]()</code></pre> - -<h3 id="Valor_de_retorno">Valor de retorno</h3> - -<p>El valor inicial dado por el <strong>iterador</strong> {{jsxref("Array.prototype.values()", "values()")}}. Por defecto, usar <code>arr[Symbol.iterator]</code> devolverá la función {{jsxref("Array.prototype.values()", "values()")}}.</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Iteración_usando_el_bucle_for...of">Iteración usando el bucle <code>for...of</code> </h3> - -<pre class="brush: js">var arr = ['w', 'y', 'k', 'o', 'p']; -var eArr = arr[Symbol.iterator](); -// nuestro navegador debe ser compatible con el bucle for..of -// y variables let-scoped en bucles for -for (let letter of eArr) { - console.log(letter); -} -</pre> - -<h3 id="Iteración_alternativa">Iteración alternativa</h3> - -<pre class="brush: js">var arr = ['w', 'y', 'k', 'o', 'p']; -var eArr = arr[Symbol.iterator](); -console.log(eArr.next().value); // w -console.log(eArr.next().value); // y -console.log(eArr.next().value); // k -console.log(eArr.next().value); // o -console.log(eArr.next().value); // p -</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES2015', '#sec-array.prototype-@@iterator', 'Array.prototype[@@iterator]()')}}</td> - <td>{{Spec2('ES2015')}}</td> - <td>Definición inicial..</td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype-@@iterator', 'Array.prototype[@@iterator]()')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Array.@@iterator")}}</p> -</div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.keys()")}}</li> - <li>{{jsxref("Array.prototype.entries()")}}</li> - <li>{{jsxref("Array.prototype.forEach()")}}</li> - <li>{{jsxref("Array.prototype.every()")}}</li> - <li>{{jsxref("Array.prototype.some()")}}</li> - <li>{{jsxref("Array.prototype.values()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/@@species/index.html b/files/es/web/javascript/referencia/objetos_globales/array/@@species/index.html deleted file mode 100644 index 2f15ad345a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/@@species/index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: 'get Array[@@species]' -slug: Web/JavaScript/Referencia/Objetos_globales/Array/@@species -tags: - - Array - - JavaScript - - Prototipo - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@species ---- -<div>{{JSRef}}</div> - -<p>La propiedad de acceso <code><strong>Array[@@species]</strong></code> devuelve el constructor de <code>Array</code>.</p> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox">Array[Symbol.species] -</pre> - -<h3 id="Valor_de_retorno">Valor de retorno</h3> - -<p>El constructor {{jsxref("Array")}}.</p> - -<h2 id="Descripción">Descripción</h2> - -<p>La propiedad de acceso <code>species</code> devuelve el constructor predeterminado para objetos <code>Array</code>. Los constructores de subclase pueden anularlo para cambiar la asignación del constructor.</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<p>La propiedad <code>species</code> devuelve la función de constructor predeterminada, que es el constructor <code>Array</code> para objetos <code>Array</code>:</p> - -<pre class="brush: js">Array[Symbol.species]; // function Array()</pre> - -<p>In a derived collection object (e.g. your custom array <code>MyArray</code>), the <code>MyArray</code> species is the <code>MyArray</code> constructor. However, you might want to overwrite this, in order to return parent <code>Array</code> objects in your derived class methods:</p> - -<pre class="brush: js">class MyArray extends Array { - // Overwrite MyArray species to the parent Array constructor - static get [Symbol.species]() { return Array; } -}</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-get-array-@@species', 'get Array [ @@species ]')}}</td> - <td>{{Spec2('ES6')}}</td> - <td>Definición inicial.</td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-get-array-@@species', 'get Array [ @@species ]')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Array.@@species")}}</p> -</div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array")}}</li> - <li>{{jsxref("Symbol.species")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/@@unscopables/index.html b/files/es/web/javascript/referencia/objetos_globales/array/@@unscopables/index.html deleted file mode 100644 index 43dc771ae7..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/@@unscopables/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: 'Array.prototype[@@unscopables]' -slug: Web/JavaScript/Referencia/Objetos_globales/Array/@@unscopables -tags: - - Array - - JavaScript - - Matriz - - Propiedad - - Prototipo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@unscopables ---- -<div>{{JSRef}}</div> - -<p>La propiedad de símbolo <code><strong>@@unscopable</strong></code> contiene nombres de propiedad que no se incluyeron en el estándar ECMAScript antes de la versión ES2015. Estas propiedades se excluyen de los enlaces de declaración <code><a href="/es/docs/Web/JavaScript/Reference/Statements/with">with</a></code>.</p> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>arr</var>[Symbol.unscopables]</pre> - -<h2 id="Descripción">Descripción</h2> - -<p> </p> - -<p>Las propiedades de matriz predeterminadas que se excluyen de los enlaces <code>with</code> son: copyWithin, entries, fill, find, findIndex, includes, keys, y values.</p> - -<p>Consulte {{jsxref("Symbol.unscopables")}} para saber cómo configurar <code>unscopables</code> para sus propios objetos.</p> - -<p>{{js_property_attributes(0,0,1)}}</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<p>El siguiente código funciona bien en ES5 y más abajo. Sin embargo, en ECMAScript 2015 y posterior, se introdujo el método {{jsxref("Array.prototype.keys()")}}. Eso significa que dentro de los entornos <code>with</code>, las "keys" ahora serían el método y no la variable. Aquí es donde entra en juego la propiedad de símbolo <code>@@unscopables</code> <code>Array.prototype[@@unscopables]</code> incorporada y evita que algunos de los métodos Array tengan un alcance en la instrucción <code>with</code>.</p> - -<pre class="brush: js">var keys = []; - -with (Array.prototype) { - keys.push('something'); -} - -Object.keys(Array.prototype[Symbol.unscopables]); -// ["copyWithin", "entries", "fill", "find", "findIndex", -// "includes", "keys", "values"]</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES2015', '#sec-array.prototype-@@unscopables', 'Array.prototype[@@unscopables]')}}</td> - <td>{{Spec2('ES2015')}}</td> - <td>Definición inicial.</td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype-@@unscopables', 'Array.prototype[@@unscopables]')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Array.@@unscopables")}}</p> -</div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Symbol.unscopables")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/concat/index.html b/files/es/web/javascript/referencia/objetos_globales/array/concat/index.html deleted file mode 100644 index dc7dfc999d..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/concat/index.html +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: Array.prototype.concat() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/concat -tags: - - Array - - JavaScript - - Métodos - - Prototipo - - Referencia - - array.concat - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/concat ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>concat()</strong></code> se usa para unir dos o más arrays. Este método no cambia los arrays existentes, sino que devuelve un nuevo array.</p> - -<div>{{EmbedInteractiveExample("pages/js/array-concat.html","shorter")}}</div> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox">var <var>nuevo_array</var> = <var>viejo_array</var>.concat(<var>valor1</var>[, <var>valor2</var>[, ...[, <var>valorN</var>]]])</pre> - -<h3 id="Parámetros">Parámetros</h3> - -<dl> - <dt><code>valor<em>N</em></code> {{optional_inline}}</dt> - <dd>Arrays y/o valores a concatenar en el nuevo array. Ver la descripción posterior para más detalles.</dd> -</dl> - -<h3 id="Valor_devuelto">Valor devuelto</h3> - -<dl> - <dd>Una nueva instancia de {{jsxref("Array")}}.</dd> -</dl> - -<h2 id="Descripción">Descripción</h2> - -<p>El método <code>concat</code> crea un nuevo array que consta de los elementos del objeto que lo llama, seguido, en orden de ingreso, por los elementos de cada parámetro (en caso de que el parámetro sea un array), o el parámetro mismo (en caso de que no sea un array). No se aplica de forma recursiva a parámetros con arreglos anidados.</p> - -<p>El método <code>concat</code> no altera <code>this</code> el array original, ni ninguno de los que fueron ingresados como parámetros, sino que devuelve una copia superficial que contiene copias de los mismos elementos de los arrays originales combinados. Los elementos de los arrays originales son copiados en el nuevo array de la siguiente manera:</p> - -<ul> - <li>Referencias a Objetos (no el objeto real): <code>concat</code> copia las referencias de objetos en el nuevo array. Ambos, el array original y el nuevo refieren al mismo objeto. Es decir, si un objeto referenciado es modificado, los cambios serán visibles tanto en el array nuevo como en el antiguo.</li> - <li>Tipo de de datos como cadenas, números y boleanos (no objetos {{jsxref("Global_Objects/String", "String")}}, {{jsxref("Global_Objects/Number", "Number")}} o {{jsxref("Global_Objects/Boolean", "Boolean")}} objects): <code>concat</code> copia los valores de los strings y numeros en el nuevo array.</li> -</ul> - -<div class="note"> -<p><strong>Nota:</strong> Al concatenar arrays o valores no se modificarán los originales. Además, las operaciones en el nuevo array (excepto las operaciones en elementos que son referencias a objetos) no tendrán efecto en el array original, y viceversa.</p> -</div> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Concatenando_dos_arrays">Concatenando dos arrays</h3> - -<p>En el siguiente código se concatenan dos arrays:</p> - -<pre class="brush: js">const letters = ['a', 'b', 'c']; -const numbers = [1, 2, 3]; - -letters.concat(numbers); -// result in ['a', 'b', 'c', 1, 2, 3] -</pre> - -<h3 id="Concatenando_tres_arrays">Concatenando tres arrays</h3> - -<p>En el siguiente código se concatenan tres arrays:</p> - -<pre class="brush: js">const num1 = [1, 2, 3]; -const num2 = [4, 5, 6]; -const num3 = [7, 8, 9]; - -const numbers = num1.concat(num2, num3); - -console.log(numbers); -// results in [1, 2, 3, 4, 5, 6, 7, 8, 9] -</pre> - -<h3 id="Concatenando_valores_a_un_array">Concatenando valores a un array</h3> - -<p>En el siguiente código se concatenan tres valores a un array:</p> - -<pre class="brush: js">var alpha = ['a', 'b', 'c']; - -var alphaNumeric = alpha.concat(1, [2, 3]); - -console.log(alphaNumeric); -// Da como resultado: ['a', 'b', 'c', 1, 2, 3] -</pre> - -<h3 id="Concatenando_arrays_anidados">Concatenando arrays anidados</h3> - -<p>En el siguiente código concatena arrays anidados y demuestra retención de referencias:</p> - -<pre class="brush: js">var num1 = [[1]]; -var num2 = [2, [3]]; - -var nums = num1.concat(num2); - -console.log(nums); -// Da como resultado: [[1], 2, [3]] - -// modifica el primer elemento de num1 -num1[0].push(4); - -console.log(nums); -// Da como resultado: [[1, 4], 2, [3]]</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Especificación</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.concat', 'Array.prototype.concat')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div> -<p>{{Compat("javascript.builtins.Array.concat")}}</p> -</div> - -<div id="compat-mobile"></div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array.push", "push")}} / {{jsxref("Array.pop", "pop")}} — añadir/eliminar elementos desde el fin del array</li> - <li>{{jsxref("Array.unshift", "unshift")}} / {{jsxref("Array.shift", "shift")}} — añadir/eliminar elementos desde el comienzo del array</li> - <li>{{jsxref("Array.splice", "splice")}} — añadir/eliminar elementos desde una posición específica del array</li> - <li>{{jsxref("String.prototype.concat()")}}</li> - <li>{{jsxref("Symbol.isConcatSpreadable")}} – controla el flattening (aplanamiento).</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/copywithin/index.html b/files/es/web/javascript/referencia/objetos_globales/array/copywithin/index.html deleted file mode 100644 index e28b99c382..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/copywithin/index.html +++ /dev/null @@ -1,165 +0,0 @@ ---- -title: Array.prototype.copyWithin() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/copyWithin -tags: - - Array - - ECMAScript 2015 - - JavaScript - - Prototipo - - Referencia - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/copyWithin ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>copyWithin()</strong></code> transfiere una copia plana de una sección a otra dentro del mismo array ( o contexto similar ), sin modificar su propiedad length y lo devuelve.</p> - -<p>{{EmbedInteractiveExample("pages/js/array-copywithin.html")}}</p> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>arr.copyWithin(target) -arr.copyWithin(target, start) -arr.copyWithin(target, start, end)</var></pre> - -<h3 id="Parámetros">Parámetros</h3> - -<dl> - <dt><code>target</code></dt> - <dd>Índice basado en cero que establece en dónde dentro de la secuencia original se insertará la secuencia copiada. Si es negativo, <code>target</code> se contará desde el final. -1 es el último elemento, -2 el penúltimo, etc.</dd> - <dd>Si <code>target</code> es igual o mayor que <code>arr.length</code>, no se copiará nada. Si <code>target</code> es posicionado después de <code>start</code>, la secuencia copiada se recortará para que encaje con <code>arr.length</code>.</dd> - <dt><code>start</code> {{optional_inline}}</dt> - <dd>Índice basado en cero a partir del cual comenzar la copia de elementos. Si es negativo, start comenzará a contarse desde el final.</dd> - <dd>Si <code>start</code> es omitido, <code>copyWithin</code> copiará desde el principio (por defecto es 0).</dd> - <dt><code>end</code> {{optional_inline}}</dt> - <dd>Índice basado en cero hasta el cual se copiarán los elementos. <code>copyWithin</code> copiará hasta pero sin incluir el end. Si es negativo, <code>end</code> será contado desde el final.</dd> - <dd>Si <code>end</code> es omitido, <code>copyWithin</code> copiará hasta el final ( por defecto es <code>arr.length </code>).</dd> -</dl> - -<h3 id="Valor_de_retorno">Valor de retorno</h3> - -<p>El array modificado.</p> - -<h2 id="Descripción">Descripción</h2> - -<p><code>copyWithin</code> es similar a la función <code>memmove</code> de C y C++ , siendo altamente eficiente para desplazar los datos en un {{jsxref("Array")}} o {{jsxref("TypedArray")}}. La secuencia de datos es leída y escrita en una sola operación; la escritura será correcta incluso en el caso de que la zona de lectura y el destino de escritura se solapen.</p> - -<p>La función <code>copyWithin</code> es intencionadamente <em>genérica</em>, permitiendo que se aplique en contextos en los cuales <code>this</code> no sea necesariamente un objeto {{jsxref("Array")}}.</p> - -<p>El método <code>copyWithin</code> es un método mutador. No altera la propiedad <code>length</code> de <code>this</code>, pero cambiará su contenido y creará nuevas propiedades si es necesario.</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<p>En los siguientes ejemplos céntrate en los siguientes aspectos:</p> - -<ul> - <li>El tamaño del contexto en el que se aplica no cambia. En los ejemplos el array parte con cinco elementos y siempre mantiene cinco elementos.</li> - <li><code>start</code> y <code>end</code> trabajan juntos para decidir qué se copiará. Siempre tienen valor por defecto aunque omitas <code>end</code>, o <code>start</code> y <code>end</code>.</li> - <li><code>target</code> trabaja solo y debe especificarse. Indica el lugar para en el que la copia comenzará a sobreescribir datos existentes. Debe estar dentro de los límites en el contexto que se aplique.</li> - <li>escribir <code>arr.copyWithin( n ) </code>es lo mismo que <code>arr.copyWithin( n, 0, arr.length)</code></li> -</ul> - -<pre class="brush: js">[1, 2, 3, 4, 5].copyWithin(-2); -// [1, 2, 3, 1, 2] - -[1, 2, 3, 4, 5].copyWithin(0, 3); -// [4, 5, 3, 4, 5] - -[1, 2, 3, 4, 5].copyWithin(0, 3, 4); -// [4, 2, 3, 4, 5] - -[1, 2, 3, 4, 5].copyWithin(-2, -3, -1); -// [1, 2, 3, 3, 4] -</pre> - -<p>A continuación se aplica en el contexto de un objeto <strong>array-like</strong>:</p> - -<ul> - <li>El objeto contextual tiene alguna propiedad con clave numérica, y una propiedad length. Esto es suficiente para considerarse array-like.</li> - <li>observa que <strong>no</strong> se modifica la propiedad length, a pesar de que se ha introducido una nueva propiedad con clave 0. A esto ser refiere cuando se dice que <code>copyWithin</code> es un método <strong>mutador</strong>. ¿Por qué se creó esta nueva propiedad? porque mediante el argumento target se especificó que la copia debía comenzar a partir de un índice que ¡¡no existía!!</li> -</ul> - -<pre class="brush: js">[].copyWithin.call({length: 5, 3: 1}, 0, 3); -// {0: 1, 3: 1, length: 5} - -</pre> - -<p>Lo que sigue ahora son las subclases tipadas de Array en ES6:</p> - -<pre class="brush: js">// Arrays tipados en ES6. Son subclases de Array -var i32a = new Int32Array([1, 2, 3, 4, 5]); - -i32a.copyWithin(0, 2); -// Int32Array [3, 4, 5, 4, 5] - -// En plataformas que todavía no siguen la norma ES6: -[].copyWithin.call(new Int32Array([1, 2, 3, 4, 5]), 0, 3, 4); -// Int32Array [4, 2, 3, 4, 5]</pre> - -<h2 id="Polyfill">Polyfill</h2> - -<pre class="brush: js">if (!Array.prototype.copyWithin) { - Array.prototype.copyWithin = - // Array: Number[, Number[, Number]] - function copyWithin(target, start, stop) { - var positiveT = target >= 0, - positiveS = (start = start | 0) >= 0, - length = this.length, - zero = 0, - r = function() {return ((+new Date) * Math.random()).toString(36)}, - delimiter = "\b" + r() + "-" + r() + "-" + r() + "\b", - hold; - - stop = stop || this.length; - hold = this.slice.apply(this, - positiveT? - [start, stop]: - positiveS? - [start, -target]: - [start]) - .join(delimiter); - - return this.splice.apply(this, - positiveT? - [target, stop - start, hold]: - positiveS? - [target, stop, hold]: - [target, start, hold]), - this.join(delimiter).split(delimiter).slice(zero, length); - } -}</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.copyWithin', 'Array.prototype.copyWithin')}}</td> - <td>{{Spec2('ES6')}}</td> - <td>Definición inicial.</td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.copyWithin', 'Array.prototype.copyWithin')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div> -<p>{{Compat("javascript.builtins.Array.copyWithin")}}</p> -</div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/entries/index.html b/files/es/web/javascript/referencia/objetos_globales/array/entries/index.html deleted file mode 100644 index 89fef6475f..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/entries/index.html +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Array.prototype.entries() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/entries -tags: - - Array - - ECMAScript 2015 - - Iterador - - Iterator - - JavaScript - - Prototipo - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/entries ---- -<div>{{JSRef}}</div> - -<div>El método <code><strong>entries()</strong></code> retorna un nuevo objeto <strong><code>Array Iterator</code></strong> que contiene los pares clave/valor para cada índice de la matriz.</div> - -<div> </div> - -<div> -<p>{{EmbedInteractiveExample("pages/js/array-entries.html")}}</p> -</div> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>arr</var>.entries()</pre> - -<h3 id="Valor_de_retorno">Valor de retorno</h3> - -<p>Un nuevo objeto iterador {{jsxref("Array")}}.</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Usando_un_bucle_for…of">Usando un bucle <a href="/es/docs/Web/JavaScript/Reference/Statements/for...of">for…of</a> </h3> - -<pre class="brush: js">var a = ['a', 'b', 'c']; -var iterator = a.entries(); - -for (let e of iterator) { - console.log(e); -} -// [0, 'a'] -// [1, 'b'] -// [2, 'c']</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentarios</th> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.entries', 'Array.prototype.entries')}}</td> - <td>{{Spec2('ES6')}}</td> - <td>Definición inicial.</td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.entries', 'Array.prototype.entries')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div> -<p>{{Compat("javascript.builtins.Array.entries")}}</p> -</div> - -<div id="compat-mobile"> </div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.keys()")}}</li> - <li>{{jsxref("Array.prototype.values()")}}</li> - <li>{{jsxref("Array.prototype.forEach()")}}</li> - <li>{{jsxref("Array.prototype.every()")}}</li> - <li>{{jsxref("Array.prototype.some()")}}</li> - <li><a href="/es/docs/Web/JavaScript/Reference/Statements/for...of">for...of</a></li> - <li><a href="/es/docs/Web/JavaScript/Reference/Iteration_protocols">Protocolos de iteración</a></li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/every/index.html b/files/es/web/javascript/referencia/objetos_globales/array/every/index.html deleted file mode 100644 index 540ebbdfa9..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/every/index.html +++ /dev/null @@ -1,195 +0,0 @@ ---- -title: Array.prototype.every() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/every -tags: - - Arreglo - - ECMAScript 5 - - JavaScript - - Prototipo - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/every ---- -<div>{{JSRef}}</div> - -<p><span class="seoSummary">Determina si todos los elementos en el array satisfacen una condición.</span></p> - -<div class="note"> -<p><strong>Precaución</strong>: ¡Llamar este método en un array vacío devuelve <code>true</code> para cualquier condición!</p> -</div> - -<div>{{EmbedInteractiveExample("pages/js/array-every.html")}}</div> - -<p class="hidden">La fuente de este ejemplo interactivo se encuentra en GitHub. Si desea contribuir con el proyecto de ejemplos interactivos, clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> y envíenos un<em>pull</em><em> request</em>.</p> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>arr</var>.every(<var>callback</var>(<var>element</var>[, <var>index</var>[, <var>array</var>]])[, <var>thisArg</var>])</pre> - -<h3 id="Parámetros">Parámetros</h3> - -<dl> - <dt><code>callback</code></dt> - <dd>Una función para probar cada elemento; recibe tres argumentos: - <dl> - <dt><code>currentValue</code> (required)</dt> - <dd>El elemento actual del arreglo que está siendo procesado.</dd> - <dt><code>index</code> {{Optional_inline}}</dt> - <dd>El índice del elemento actual del arreglo que está siendo procesado.</dd> - <dt><code>array</code> {{Optional_inline}}</dt> - <dd>El arreglo sobre el cual fue llamado <code>every</code>.</dd> - </dl> - </dd> - <dt><code>thisArg</code> {{Optional_inline}}</dt> - <dd>Valor por usar como <code>this</code> cuando se ejecute <code>callback</code>.</dd> -</dl> - -<h3 id="Valor_de_retorno">Valor de retorno</h3> - -<p><code>true</code> si la función de devolución de llamada devuelve un valor de {{Glossary("truthy")}} para cada elemento de matriz; de lo contrario, <code>false</code>.</p> - -<h2 id="Descripción">Descripción</h2> - -<p>El método <code>every</code> ejecuta la función <code>callback</code> dada una vez por cada elemento presente en el arreglo hasta encontrar uno que haga retornar un valor falso a <code>callback</code> (un valor que resulte falso cuando se convierta a booleano). Si no se encuentra tal elemento, el método <code>every</code> de inmediato retorna <code>false</code>. O si <code>callback</code> retorna verdadero para todos los elementos, <code>every</code> retornará <code>true</code>. <code>callback</code> es llamada sólo para índices del arreglo que tengan valores asignados; no se llama para índices que hayan sido eliminados o a los que no se les haya asignado un valor.</p> - -<p><code>callback</code> es llamada con tres argumetos: el valor del elemento, el índice del elemento y el objeto Array que está siendo recorrido.</p> - -<p>Si se proporciona un parámetro <code>thisArg</code> a <code>every</code>, será pasado a la función <code>callback</code> cuando sea llamada, usándolo como valor <code>this</code>. En otro caso, se pasará el valor <code>undefined</code> para que sea usado como valor <code>this</code>. El valor <code>this</code> observable por parte de <code>callback</code> se determina de acuerdo a <a href="/es/docs/Web/JavaScript/Reference/Operators/this">las normas usuales para determinar el <code>this</code> visto por una función</a>.</p> - -<p><code>every</code> no modifica el arreglo sobre el cual es llamado.</p> - -<p>El intervalo de elementos procesados por <code>every</code> se establece antes de la primera llamada a <code>callback</code>. Los elementos que se agreguen al arreglo después de que la función <code>every</code> comience no serán vistos por la función <code>callback</code>. Si se modifican elementos existentes en el arreglo, su valor cuando sea pasado a <code>callback</code> será el valor que tengan cuando sean visitados; los elementos que se eliminen no serán visitados.</p> - -<p><code>every</code> opera como el cuantificador "para todo" en matemáticas. En particular con el arreglo vacío retorna true. (es una <a href="http://en.wikipedia.org/wiki/Vacuous_truth#Vacuous_truths_in_mathematics">verdad vacua</a> que todos los elementos del <a href="http://en.wikipedia.org/wiki/Empty_set#Common_problems">conjunto vacío</a> satisfacen una condición dada.)</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Probando_el_tamaño_de_todos_los_elementos_de_un_arreglo">Probando el tamaño de todos los elementos de un arreglo</h3> - -<p>El siguiente ejemplo prueba si todos los elementos de un arreglo son mayores que 10.</p> - -<pre class="brush: js">function esSuficientementeGrande(elemento, indice, arrreglo) { - return elemento >= 10; -} -[12, 5, 8, 130, 44].every(esSuficientementeGrande); // false -[12, 54, 18, 130, 44].every(esSuficientementeGrande); // true -</pre> - -<h3 id="Usar_funciones_flecha">Usar funciones flecha</h3> - -<p>Las <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions">funciones flecha</a> proveen una sintaxis más corta para la misma prueba.</p> - -<pre class="brush: js">[12, 5, 8, 130, 44].every(elem => elem >= 10); // false -[12, 54, 18, 130, 44].every(elem => elem >= 10); // true</pre> - -<h2 id="Polyfill">Polyfill</h2> - -<p><code>every</code> fue añadida a la norma ECMA-262 en la 5ta edición; por lo que podría no estar presente en otras implementaciones de la norma. Puede sobrellevarlo insertando el siguiente código al comienzo de su programa, permitiendo el uso de <code>every</code> en implementación que no lo soporten de manera nativa. Este algoritmo es exactamente el especificado en ECMA-262, 5ta edición, suponiendo que <code>Object</code> y <code>TypeError</code> tienen sus valores originales y que <code>callbackfn.call</code> evalua al valor original de {{jsxref("Function.prototype.call")}}</p> - -<pre class="brush: js">if (!Array.prototype.every) { - Array.prototype.every = function(callbackfn, thisArg) { - 'use strict'; - var T, k; - - if (this == null) { - throw new TypeError('this is null or not defined'); - } - - // 1. Let O be the result of calling ToObject passing the this - // value as the argument. - var O = Object(this); - - // 2. Let lenValue be the result of calling the Get internal method - // of O with the argument "length". - // 3. Let len be ToUint32(lenValue). - var len = O.length >>> 0; - - // 4. If IsCallable(callbackfn) is false, throw a TypeError exception. - if (typeof callbackfn !== 'function') { - throw new TypeError(); - } - - // 5. If thisArg was supplied, let T be thisArg; else let T be undefined. - if (arguments.length > 1) { - T = thisArg; - } - - // 6. Let k be 0. - k = 0; - - // 7. Repeat, while k < len - while (k < len) { - - var kValue; - - // a. Let Pk be ToString(k). - // This is implicit for LHS operands of the in operator - // b. Let kPresent be the result of calling the HasProperty internal - // method of O with argument Pk. - // This step can be combined with c - // c. If kPresent is true, then - if (k in O) { - - // i. Let kValue be the result of calling the Get internal method - // of O with argument Pk. - kValue = O[k]; - - // ii. Let testResult be the result of calling the Call internal method - // of callbackfn with T as the this value and argument list - // containing kValue, k, and O. - var testResult = callbackfn.call(T, kValue, k, O); - - // iii. If ToBoolean(testResult) is false, return false. - if (!testResult) { - return false; - } - } - k++; - } - return true; - }; -} -</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.4.16', 'Array.prototype.every')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td>Initial definition. Implemented in JavaScript 1.6.</td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.every', 'Array.prototype.every')}}</td> - <td>{{Spec2('ES6')}}</td> - <td></td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.every', 'Array.prototype.every')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td></td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div> -<p>{{Compat("javascript.builtins.Array.every")}}</p> -</div> - -<div id="compat-mobile"></div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.forEach()")}}</li> - <li>{{jsxref("Array.prototype.some()")}}</li> - <li>{{jsxref("TypedArray.prototype.every()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/fill/index.html b/files/es/web/javascript/referencia/objetos_globales/array/fill/index.html deleted file mode 100644 index 7113df34bd..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/fill/index.html +++ /dev/null @@ -1,145 +0,0 @@ ---- -title: Array.prototype.fill() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/fill -tags: - - Array - - ECMAScript 2015 - - JavaScript - - Prototipo - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/fill ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>fill()</strong></code> cambia todos los elementos en un arreglo por un valor estático, desde el índice start (por defecto 0) hasta el índice end (por defecto <code>array.length</code>). Devuelve el arreglo modificado.</p> - -<p>{{EmbedInteractiveExample("pages/js/array-fill.html")}}</p> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>arr</var>.fill(<var>value</var>[, <var>start<var> = 0[, <var>end</var> = this.length]])</var></var></pre> - -<h3 id="Parámetros">Parámetros</h3> - -<dl> - <dt><code>value</code></dt> - <dd>Valor con el que se va a rellenar el arreglo. (Nótese que todos los elementos en el arreglo tendrán este mismo valor).</dd> - <dt><code>start</code> {{optional_inline}}</dt> - <dd>Índice inicial, por defecto 0.</dd> - <dt><code>end</code> {{optional_inline}}</dt> - <dd>Índice final, por defecto <code>this.length</code>.</dd> -</dl> - -<h3 id="Valor_de_retorno">Valor de retorno</h3> - -<p>El arreglo modificado, rellenado con <code>valor</code>.</p> - -<h2 id="Descripción">Descripción</h2> - -<ul> - <li>Si <code>start</code> es negativo, se interpreta como <code>array.length + start</code>.</li> - <li>Si <code>end</code> es negativo, se interpreta como <code>array.length + end</code>.</li> - <li><code>fill</code> es genérico de forma intencional: no requiere que su valor <code>this</code> sea un objeto <code>Array</code>.</li> - <li><code>fill</code> es un método mutador: modifica el arreglo sobre el que se invoca; no devuelve una copia de éste.</li> - <li>Si el primer parámetro es un objeto, copia su referencia y rellena el arreglo con referencias a dicho objeto.</li> -</ul> - -<h2 id="Ejemplos">Ejemplos</h2> - -<pre class="brush: js">[1, 2, 3].fill(4); // [4, 4, 4] -[1, 2, 3].fill(4, 1); // [1, 4, 4] -[1, 2, 3].fill(4, 1, 2); // [1, 4, 3] -[1, 2, 3].fill(4, 1, 1); // [1, 2, 3] -[1, 2, 3].fill(4, 3, 3); // [1, 2, 3] -[1, 2, 3].fill(4, -3, -2); // [4, 2, 3] -[1, 2, 3].fill(4, NaN, NaN); // [1, 2, 3] -[1, 2, 3].fill(4, 3, 5); // [1, 2, 3] -Array(3).fill(4); // [4, 4, 4] -[].fill.call({ length: 3 }, 4); // {0: 4, 1: 4, 2: 4, length: 3} - -// Objects by reference. -var arr = Array(3).fill({}) // [{}, {}, {}]; -arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]</pre> - -<h2 id="Polyfill">Polyfill</h2> - -<pre class="brush: js">if (!Array.prototype.fill) { - Object.defineProperty(Array.prototype, 'fill', { - value: function(value) { - - // Pasos 1-2. - if (this == null) { - throw new TypeError('esto es nulo o no definido'); - } - - var O = Object(this); - - // Pasos 3-5. - var len = O.length >>> 0; - - // Pasos 6-7. - var start = arguments[1]; - var relativeStart = start >> 0; - - // Paso 8. - var k = relativeStart < 0 ? - Math.max(len + relativeStart, 0) : - Math.min(relativeStart, len); - - // Pasos 9-10. - var end = arguments[2]; - var relativeEnd = end === undefined ? - len : end >> 0; - - // Paso 11. - var final = relativeEnd < 0 ? - Math.max(len + relativeEnd, 0) : - Math.min(relativeEnd, len); - - // Paso 12. - while (k < final) { - O[k] = value; - k++; - } - - // Paso 13. - return O; - } - }); -}</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.fill', 'Array.prototype.fill')}}</td> - <td>{{Spec2('ES6')}}</td> - <td>Definición inicial.</td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.fill', 'Array.prototype.fill')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td></td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div> -<p>{{Compat("javascript.builtins.Array.fill")}}</p> -</div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array")}}</li> - <li>{{jsxref("TypedArray.prototype.fill()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/filter/index.html b/files/es/web/javascript/referencia/objetos_globales/array/filter/index.html deleted file mode 100644 index 98e6843c4f..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/filter/index.html +++ /dev/null @@ -1,231 +0,0 @@ ---- -title: Array.prototype.filter() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/filter -tags: - - Array - - ECMAScript 5 - - JavaScript - - Prototipo - - Referencia - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/filter ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>filter()</strong></code> crea un nuevo array con todos los elementos que cumplan la condición implementada por la función dada.</p> - -<p>{{EmbedInteractiveExample("pages/js/array-filter.html")}}</p> - -<h2 id="Syntax" name="Syntax">Sintaxis</h2> - -<pre class="notranslate"><var>var newArray = arr</var>.filter(<var>callback(currentValue[, index[, array]])</var>[, <var>thisArg</var>])</pre> - -<h3 id="Parameters" name="Parameters">Parámetros</h3> - -<dl> - <dt><code>callback</code></dt> - <dd>Función que <strong>comprueba cada elemento </strong>del array para ver si cumple la condición (también llamada predicado). Retorna <code>true</code> si el elemento la cumple o en caso contrario retornará <code>false</code>. Acepta tres parámetros:</dd> - <dd> - <dl> - <dt><code>currentValue</code></dt> - <dd>El elemento actual del array que está siendo procesado.</dd> - <dt><code>index</code> {{optional_inline}}</dt> - <dd>El índice del elemento actual del array que está siendo procesado.</dd> - <dt><code>array</code> {{optional_inline}}</dt> - <dd>El array sobre el que se ha llamado <code>filter</code>.</dd> - </dl> - </dd> - <dt><code>thisArg</code> {{optional_inline}}</dt> - <dd>Opcional. Valor a utilizar como <code>this</code> cuando se ejecuta <code>callback</code>.</dd> -</dl> - -<h3 id="Valor_devuelto">Valor devuelto</h3> - -<p>Un nuevo array con los elementos que cumplen la condición. Si ningún elemento cumple la condición, se devolverá un array vacío.</p> - -<h2 id="Description" name="Description">Descripción</h2> - -<p><code>filter()</code> llama a la función <code>callback</code> sobre cada elemento del array, y construye un nuevo array con todos los valores para los cuales <code>callback</code> devuelve un valor verdadero. <code>callback</code> es invocada sólo para índices del array que tengan un valor asignado. No se invoca sobre índices que hayan sido borrados o a los que no se les haya asignado algún valor. Los elementos del array que no cumplan la condición <code>callback</code> simplemente los salta, y no son incluidos en el nuevo array.</p> - -<p><code>callback</code> se invoca con tres argumentos:</p> - -<ol> - <li>El valor de cada elemento</li> - <li>El índice del elemento</li> - <li>El objeto Array que se está recorriendo</li> -</ol> - -<p>Si se proporciona un parámetro <code>thisArg</code> a <code>filter()</code>, este será pasado a <code>callback</code> cuando sea invocado, para usarlo como valor <code>this</code>. De lo contrario, se pasará el valor <code>undefined</code> como valor <code>this</code>. El valor <code>this</code> dentro del <code>callback</code> se determina conforme a las <a href="/es/docs/Web/JavaScript/Reference/Operators/this">las normas habituales para determinar el <em>this </em>visto por una función.</a></p> - -<p><code>filter()</code> no hace mutar el array sobre el cual es llamado.</p> - -<p>El rango de elementos procesados por <code>filter()</code> se establece antes de la primera invocación de <code>callback</code>. Los elementos que se añadan al array después de que comience la llamada a <code>filter()</code> no serán visitados por <code>callback</code>. Si se modifica o elimina un elemento existente del array, cuando pase su valor a <code>callback</code> será el que tenga cuando <code>filter()</code> lo recorra; los elementos que son eliminados no son recorridos.</p> - -<h2 id="Examples" name="Examples">Ejemplos</h2> - -<h3 id="Example_Filtering_out_all_small_values" name="Example:_Filtering_out_all_small_values">Filtrando todos los valores pequeños</h3> - -<p>El siguiente ejemplo usa <code>filter()</code> para crear un array filtrado que excluye todos los elementos con valores inferiores a 10.</p> - -<pre class="brush: js notranslate">function esSuficientementeGrande(elemento) { - return elemento >= 10; -} -var filtrados = [12, 5, 8, 130, 44].filter(esSuficientementeGrande); -// filtrados es [12, 130, 44] -</pre> - -<h3 id="Filtrando_entradas_inválidas_desde_un_JSON">Filtrando entradas inválidas desde un JSON</h3> - -<p>El siguiente ejemplo emplea <code>filter()</code> para crear un json filtrado con todos lo elementos que tengan id numérico distinto de cero.</p> - -<pre class="brush: js notranslate">var arr = [ - { id: 15 }, - { id: -1 }, - { id: 0 }, - { id: 3 }, - { id: 12.2 }, - { }, - { id: null }, - { id: NaN }, - { id: 'undefined' } -]; - -var entradasInvalidas = 0; -// Si el elemento tiene un atributo id, y su valor correspondiente es un numero -// Y no es el valor NaN, entonces es una entrada válida -function filtrarPorID(obj) { - if ('id' in obj && typeof(obj.id) === 'number' && !isNaN(obj.id)) { - return true; - } else { - entradasInvalidas++; - return false; - } -} - -var arrPorID = arr.filter(filtrarPorID); - -console.log('Array Filtrado\n', arrPorID); -// [{ id: 15 }, { id: -1 }, { id: 0 }, { id: 3 }, { id: 12.2 }] - -console.log('Número de Entradas Invalidas = ', entradasInvalidas); -// 4</pre> - -<h3 id="Búsqueda_en_el_arreglo">Búsqueda en el arreglo</h3> - -<p>El siguiente ejemplo emplea filter() para filtrar el contendio de un arreglo en función de un criterio de búsqueda.</p> - -<pre class="brush: js notranslate">var fruits = ['apple', 'banana', 'grapes', 'mango', 'orange']; - -/** - * Filtra la matríz en función de un criterio de búsqueda (query) - */ -function filterItems(query) { - return fruits.filter(function(el) { - return el.toLowerCase().indexOf(query.toLowerCase()) > -1; - }) -} - -console.log(filterItems('ap')); // ['apple', 'grapes'] -console.log(filterItems('an')); // ['banana', 'mango', 'orange']</pre> - -<h3 id="Implementación_en_ES2015">Implementación en ES2015</h3> - -<pre class="brush: js notranslate">const fruits = ['apple', 'banana', 'grapes', 'mango', 'orange']; - -/** - * Filtra la matríz en función de un criterio de búsqueda (query) - */ -const filterItems = query => { - return fruits.filter((el) => - el.toLowerCase().indexOf(query.toLowerCase()) > -1 - ); -} - -console.log(filterItems('ap')); // ['apple', 'grapes'] -console.log(filterItems('an')); // ['banana', 'mango', 'orange']</pre> - -<h2 id="Polyfill">Polyfill</h2> - -<p><code>filter()</code> se añadió a la norma ECMA-262 en la 5ta edición; como tal puede no estar presente en todas las implementaciones de la norma. Puedes sobrellevarlo insertando el siguiente código al comienzo de su programa, para permitir el uso de <code>filter()</code> en implementaciones de ECMA-262 que no lo soporten de forma nativa. Este algoritmo es exactamente el especificado en ECMA-262, 5ta edición, supone que <code>fn.call</code> evalua al valor original de {{jsxref("Function.prototype.call")}}, y que {{jsxref("Array.prototype.push")}} tiene su valor original.</p> - -<pre class="notranslate">if (!Array.prototype.filter){ - Array.prototype.filter = function(func, thisArg) { - 'use strict'; - if ( ! ((typeof func === 'Function' || typeof func === 'function') && this) ) - throw new TypeError(); - - var len = this.length >>> 0, - res = new Array(len), // preallocate array - t = this, c = 0, i = -1; - - var kValue; - if (thisArg === undefined){ - while (++i !== len){ - // checks to see if the key was set - if (i in this){ - kValue = t[i]; // in case t is changed in callback - if (func(t[i], i, t)){ - res[c++] = kValue; - } - } - } - } - else{ - while (++i !== len){ - // checks to see if the key was set - if (i in this){ - kValue = t[i]; - if (func.call(thisArg, t[i], i, t)){ - res[c++] = kValue; - } - } - } - } - - res.length = c; // shrink down array to proper size - return res; - }; -}</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.4.20', 'Array.prototype.filter')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td>Definición Inicial. Implementado en JavaScript 1.6.</td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.filter', 'Array.prototype.filter')}}</td> - <td>{{Spec2('ES6')}}</td> - <td></td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.filter', 'Array.prototype.filter')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td></td> - </tr> - </tbody> -</table> - -<h2 id="Browser_compatibility" name="Browser_compatibility">Compatibilidad con navegadores</h2> - -<div> -<p>{{Compat("javascript.builtins.Array.filter")}}</p> -</div> - -<h2 id="See_also" name="See_also">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.forEach()")}}</li> - <li>{{jsxref("Array.prototype.every()")}}</li> - <li>{{jsxref("Array.prototype.some()")}}</li> - <li>{{jsxref("Array.prototype.reduce()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/find/index.html b/files/es/web/javascript/referencia/objetos_globales/array/find/index.html deleted file mode 100644 index 7de7850cca..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/find/index.html +++ /dev/null @@ -1,233 +0,0 @@ ---- -title: Array.prototype.find() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/find -tags: - - Array - - ECMAScript 2015 - - JavaScript - - Prototipo - - Referencia - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/find ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>find()</strong></code> devuelve el <strong>valor</strong> del <strong>primer elemento</strong> del array que cumple la función de prueba proporcionada.</p> - -<div>{{EmbedInteractiveExample("pages/js/array-find.html","shorter")}}</div> - - - -<ul> - <li>Si necesitas el <strong>índice</strong> del elemento encontrado en el array, utiliza {{jsxref("Array.findIndex", "findIndex()")}}.</li> - <li>Si necesitas encontrar el <strong>índice de un elemento</strong>, {{jsxref("Array.prototype.indexOf()")}}. (Es similar a {{jsxref("Array.findIndex", "findIndex()")}}, pero comprueba la igualdad de cada elemento con el valor en lugar de usar una función de prueba.)</li> - <li>Si necesitas encontrar si un valor <strong>existe</strong> en un array, utiliza {{jsxref("Array.prototype.includes()")}}.</li> - <li>Si necesitas encontrar si algún elemento cumple la función de prueba proporcionada, usa {{jsxref("Array.prototype.some()")}}.</li> -</ul> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>arr</var>.find(<var>callback(element[, index[, array]])</var>[, <var>thisArg</var>])</pre> - -<h3 id="Parámetros">Parámetros</h3> - -<dl> - <dt><code>callback</code></dt> - <dd>Función que se ejecuta sobre cada valor en el array, tomando tres argumentos: - <dl> - <dt><code>element</code></dt> - <dd>El elemento actual que se está procesando en el array.</dd> - <dt><code>index</code> {{optional_inline}}</dt> - <dd>El índice (posición) del elemento actual que se está procesando en el array.</dd> - <dt><code>array</code> {{optional_inline}}</dt> - <dd>El array desde el que se llama al método <code>find</code>.</dd> - </dl> - </dd> - <dt><code>thisArg</code> {{optional_inline}}</dt> - <dd>Objeto a usar como <code><a href="/es/docs/Web/JavaScript/Referencia/Operadores/this">this</a></code> cuando se ejecuta <code>callback</code>.</dd> -</dl> - -<h3 id="Valor_devuelto">Valor devuelto</h3> - -<p>El <strong>valor</strong> del <strong>primer elemento</strong> del array que cumple la función de prueba proporcionada; de lo contrario, devuelve {{jsxref("undefined")}}.</p> - -<h2 id="Descripción">Descripción</h2> - -<p>El método <code>find</code> ejecuta la función <code>callback</code> una vez por cada índice del array hasta que encuentre uno en el que el <code>callback</code> devuelva un valor <a href="/es/docs/Glossary/Truthy">verdadero</a>. Si es así, <code>find</code> devuelve inmediatamente el valor del elemento. En caso contrario, <code>find</code> devuelve {{jsxref("undefined")}}.</p> - -<p><code>callback</code> se invoca con tres argumentos: el valor del elemento, el índice del elemento y el objeto <code>Array</code> que está siendo recorrido.</p> - -<p>Si un parámetro <code>thisArg</code> es proporcionado al método <code>find</code>, este será utilizado como <code>this</code> para cada invocación del callback. Si no se proporciona el parámetro, entonces se utiliza {{jsxref("undefined")}}.</p> - -<p>El método <code>find</code> no transforma el array desde el cual es llamado, pero la función proporcionada en <code>callback</code> sí. En ese caso, los elementos procesados por <code>find</code> son establecidos <em>antes</em> de la primera invocación de <code>callback</code>. Por lo tanto:</p> - -<ul> - <li><code>callback</code> no visitará ningún elemento añadido al array después de que comience la llamada a <code>find</code>.</li> - <li>Si un elemento existente no visitado del array es modificado por <code>callback</code>, su valor que se pasa al <code>callback</code> que lo visita será el valor en el momento en que <code>find</code> visita ese índice del elemento.</li> - <li>Los elementos que sean {{jsxref("delete", "deleted")}} (eliminados) aún se visitan.</li> -</ul> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Encontrar_un_objeto_en_un_array_por_una_de_sus_propiedades">Encontrar un objeto en un array por una de sus propiedades</h3> - -<pre class="brush: js">const inventario = [ - {nombre: 'manzanas', cantidad: 2}, - {nombre: 'bananas', cantidad: 0}, - {nombre: 'cerezas', cantidad: 5} -]; - -function esCereza(fruta) { - return fruta.nombre === 'cerezas'; -} - -console.log(inventario.find(esCereza)); -// { nombre: 'cerezas', cantidad: 5 }</pre> - -<h4 id="Utilizando_funciones_flecha_y_destructuring">Utilizando funciones flecha y destructuring</h4> - -<pre class="brush: js">const inventario = [ - {nombre: 'manzanas', cantidad: 2}, - {nombre: 'bananas', cantidad: 0}, - {nombre: 'cerezas', cantidad: 5} -]; - -const resultado = inventario.find( fruta => fruta.nombre === 'cerezas' ); - -console.log(resultado); // { nombre: 'cerezas', cantidad: 5 }</pre> - -<h3 id="Encontrar_un_número_primo_en_un_array">Encontrar un número primo en un array</h3> - -<p>El siguiente ejemplo encuentra un elemento en un array que sea un número primo (o devuelve {{jsxref("undefined")}} si no hay un número primo).</p> - -<pre class="brush: js">function isPrime(element, index, array) { - let start = 2; - while (start <= Math.sqrt(element)) { - if (element % start++ < 1) { - return false; - } - } - return element > 1; -} - -console.log([4, 6, 8, 12].find(isPrime)); // undefined, no encontrado -console.log([4, 5, 8, 12].find(isPrime)); // 5 -</pre> - -<p>Los siguientes ejemplos muestran cómo elementos no existentes o eliminados son visitados y el valor pasado a <code>callback</code> es su valor cuando son visitados.</p> - -<pre class="brush: js">// Declarar un array sin elementos en los índices 2, 3 y 4 -const array = [0,1,,,,5,6]; - -// Muestra todos los índices, no sólo aquellos que tienen valores asignados -array.find(function(value, index) { - console.log('Visited index ' + index + ' with value ' + value); -}); - -// Mostrar todos los índices, incluyendo los eliminados -array.find(function(value, index) { - - // Eliminar el elemento 5 en la primera iteración - if (index == 0) { - console.log('Deleting array[5] with value ' + array[5]); - delete array[5]; - } - // El elemento 5 se visita aun habiendo sido eliminado - console.log('Visited index ' + index + ' with value ' + value); -}); -// expected output: -// Deleting array[5] with value 5 -// Visited index 0 with value 0 -// Visited index 1 with value 1 -// Visited index 2 with value undefined -// Visited index 3 with value undefined -// Visited index 4 with value undefined -// Visited index 5 with value undefined -// Visited index 6 with value 6 -</pre> - -<h2 id="Polyfill">Polyfill</h2> - -<p>Este método ha sido añadido a la espeficicación ECMAScript 2015 y puede no estar disponible en todas las implementaciones de JavaScript aún. Sin embargo, puedes utilizar el siguiente polyfill de <code>Array.prototype.find</code>:</p> - -<pre class="brush: js">// https://tc39.github.io/ecma262/#sec-array.prototype.find -if (!Array.prototype.find) { - Object.defineProperty(Array.prototype, 'find', { - value: function(predicate) { - // 1. Let O be ? ToObject(this value). - if (this == null) { - throw new TypeError('"this" is null or not defined'); - } - - var o = Object(this); - - // 2. Let len be ? ToLength(? Get(O, "length")). - var len = o.length >>> 0; - - // 3. If IsCallable(predicate) is false, throw a TypeError exception. - if (typeof predicate !== 'function') { - throw new TypeError('predicate must be a function'); - } - - // 4. If thisArg was supplied, let T be thisArg; else let T be undefined. - var thisArg = arguments[1]; - - // 5. Let k be 0. - var k = 0; - - // 6. Repeat, while k < len - while (k < len) { - // a. Let Pk be ! ToString(k). - // b. Let kValue be ? Get(O, Pk). - // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)). - // d. If testResult is true, return kValue. - var kValue = o[k]; - if (predicate.call(thisArg, kValue, k, o)) { - return kValue; - } - // e. Increase k by 1. - k++; - } - - // 7. Return undefined. - return undefined; - }, - configurable: true, - writable: true - }); -} -</pre> - -<p>Si necesitas dar soporte a motores de JavaScript realmente obsoletos que no soportan <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty">Object.defineProperty</a></code>, es mejor no utilizar el polyfill para los métodos <code>Array.prototype</code>, ya que no podrás hacerlos no enumerables.</p> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Especificación</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.find', 'Array.prototype.find')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_en_navegadores">Compatibilidad en navegadores</h2> - -<div> -<p>{{Compat("javascript.builtins.Array.find")}}</p> -</div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.findIndex()")}} – encuentra y devuelve un índice</li> - <li>{{jsxref("Array.prototype.includes()")}} – comprueba que un valor existe en el array</li> - <li>{{jsxref("Array.prototype.filter()")}} – elimina todos los elementos que no coincidan</li> - <li>{{jsxref("Array.prototype.every()")}} – comprueba todos los elementos</li> - <li>{{jsxref("Array.prototype.some()")}} – comprueba hasta que un elemento coincide</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/findindex/index.html b/files/es/web/javascript/referencia/objetos_globales/array/findindex/index.html deleted file mode 100644 index c249a3b2df..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/findindex/index.html +++ /dev/null @@ -1,187 +0,0 @@ ---- -title: Array.prototype.findIndex() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/findIndex -tags: - - Array - - ECMAScript 2015 - - JavaScript - - Protitipo - - Referencia - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/findIndex ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>findIndex()</strong></code> devuelve el <strong>índice</strong> del <strong>primer elemento</strong> de un array que cumpla con la función de prueba proporcionada. En caso contrario devuelve -1.</p> - -<div>{{EmbedInteractiveExample("pages/js/array-findindex.html","shorter")}}</div> - -<p>Vea también el método {{jsxref("Array.find", "find()")}}, que devuelve el <strong>valor </strong>de un elemento encontrado en el array en lugar de su índice.</p> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>arr</var>.findIndex(<var>callback</var>( <var>element</var>[, <var>index</var>[, <var>array</var>]] )[, <var>thisArg</var>]) -</pre> - -<h3 id="Parámetros">Parámetros</h3> - -<dl> - <dt><code><var>callback</var></code></dt> - <dd> - <p>Función a ejecutar en cada uno de los valores del array hasta que devuelve <code>true</code>, indicando que el elemento que la cumple fue encontrado.</p> - - <p>Recibe tres argumentos:</p> - - <dl> - <dt><code><var>element</var></code></dt> - <dd>El elemento actual siendo procesado en el array.</dd> - <dt><code><var>index</var></code> {{optional_inline}}</dt> - <dd>El índice del elemento actual que está siendo procesado en el array.</dd> - <dt><code><var>array</var></code> {{optional_inline}}</dt> - <dd>El array <code>findIndex()</code> de donde fue llamado.</dd> - </dl> - </dd> - <dt><code><var>thisArg</var></code> {{optional_inline}}</dt> - <dd>Objeto opcional para usar como <code>this</code> cuando se ejecuta el <code><var>callback</var></code>.</dd> -</dl> - -<h3 id="Valor_devuelto">Valor devuelto</h3> - -<p>Un índice en el array si un elemento pasa la prueba; en caso contrario, <code>-1</code>.</p> - -<h2 id="Descripción">Descripción</h2> - -<p>El método <code>findIndex()</code> ejecuta la función de <em><code>callback</code></em> una vez por cada índice del array hasta que encuentre uno donde <em><code>callback</code></em> devuelva un valor verdadero (eso es, un valor que <a href="/en-US/docs/Glossary/Type_Conversion">fuerza</a> un <code>true</code>).</p> - -<p>Si dicho elemento es encontrado, <code>findIndex()</code> inmediatamente devuelve el índice del elemento. Si la función <em><code>callback</code></em> nunca devuelve un valor verdadero (o el tamaño del array es 0), <code>findIndex</code> devuelve <code>-1</code>.</p> - -<div class="blockIndicator note"> -<p><strong>Alerta de Edge Case:</strong> A diferencia de otros métodos de arrays como {{jsxref("Array.some()")}}, <code><var>callback</var></code> se ejecuta incluso en índices sin valores asignados.</p> -</div> - -<p><em><code>callback</code></em> se invoca con tres argumentos:</p> - -<ol> - <li>El valor del elemento</li> - <li>El índice del elemento</li> - <li>El Array que será recorrido.</li> -</ol> - -<p>Si el parámetro <code>thisArg</code> es provisto a findIndex, entonces será usado como el this para cada invocación del <code>callback</code>. Si no es provisto, entonces {{jsxref("undefined")}} será utilizado. </p> - -<p>El rango de elementos procesados por <code>findIndex()</code> se establece antes de la primera invocación de la función <em><code>callback</code></em>. Los elementos añadidos al array después de que la llamada a <code>findIndex()</code> comience no serán visitados por el <code>callback</code>. Si un elemento existente que no ha sido visitado en el array es modificado por el <em><code>callback</code></em>, el valor pasado al <em><code>callback</code></em> que lo visite será el valor en el momento en que <code>findIndex()</code> visite el índice del elemento.</p> - -<p>Los elementos <a href="/es/docs/Web/JavaScript/Referencia/Operadores/delete">eliminados</a> aún son visitados.</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Encontrar_el_índice_de_un_número_primo_en_un_array">Encontrar el índice de un número primo en un array</h3> - -<p>El siguiente ejemplo encuentra el índice de un elemento en el array que sea número primo (o devuelve <code>-1</code> si no hay ningún número primo).</p> - -<pre class="brush: js">function isPrime(element, index, array) { - var start = 2; - while (start <= Math.sqrt(element)) { - if (element % start < 1) { - return false; - } else { - start++; - } - } - return element > 1; -} - -console.log([4, 6, 8, 12].findIndex(isPrime)); // -1, no encontrado -console.log([4, 6, 7, 12].findIndex(isPrime)); // 2 -</pre> - -<h3 id="Encontrar_un_índice_utilizando_funciones_flecha">Encontrar un índice utilizando funciones flecha</h3> - -<p>El siguiente ejemplo encuentra el índice de una fruta utilizando funciones flecha.</p> - -<pre class="brush: js">const fruits = ["apple", "banana", "cantaloupe", "blueberries", "grapefruit"]; - -const index = fruits.findIndex(fruit => fruit === "blueberries"); - -console.log(index); // 3 -console.log(fruits[index]); // blueberries -</pre> - -<h2 id="Polyfill">Polyfill</h2> - -<pre class="brush: js">// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex -if (!Array.prototype.findIndex) { - Object.defineProperty(Array.prototype, 'findIndex', { - value: function(predicate) { - // 1. Let O be ? ToObject(this value). - if (this == null) { - throw new TypeError('"this" is null or not defined'); - } - - var o = Object(this); - - // 2. Let len be ? ToLength(? Get(O, "length")). - var len = o.length >>> 0; - - // 3. If IsCallable(predicate) is false, throw a TypeError exception. - if (typeof predicate !== 'function') { - throw new TypeError('predicate must be a function'); - } - - // 4. If thisArg was supplied, let T be thisArg; else let T be undefined. - var thisArg = arguments[1]; - - // 5. Let k be 0. - var k = 0; - - // 6. Repeat, while k < len - while (k < len) { - // a. Let Pk be ! ToString(k). - // b. Let kValue be ? Get(O, Pk). - // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)). - // d. If testResult is true, return k. - var kValue = o[k]; - if (predicate.call(thisArg, kValue, k, o)) { - return k; - } - // e. Increase k by 1. - k++; - } - - // 7. Return -1. - return -1; - }, - configurable: true, - writable: true - }); -} -</pre> - -<p>Si necesita soporte para motores de JavaScript obsoletos que no soportan <code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/defineProperty">Object.defineProperty</a></code> es mejor no emplear polyfills para métodos <code>Array.prototype</code>, ya que no puede hacerlos no-enumerables.</p> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Specification</th> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.findindex', 'Array.prototype.findIndex')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_en_navegadores">Compatibilidad en navegadores</h2> - -<div> -<p>{{Compat("javascript.builtins.Array.findIndex")}}</p> -</div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.find()")}}</li> - <li>{{jsxref("Array.prototype.indexOf()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/flat/index.html b/files/es/web/javascript/referencia/objetos_globales/array/flat/index.html deleted file mode 100644 index 67d1b3a4c7..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/flat/index.html +++ /dev/null @@ -1,174 +0,0 @@ ---- -title: Array.prototype.flat() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/flat -tags: - - Array - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/flat ---- -<div>{{JSRef}} {{SeeCompatTable}}</div> - -<p>El método <code><strong>flat()</strong></code> crea una nueva matriz con todos los elementos de sub-array concatenados recursivamente hasta la profundidad especificada.</p> - -<p class="hidden">\{{EmbedInteractiveExample("pages/js/array-flat.html")}}</p> - - - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>var newArray = arr</var>.flat(<var>[depth]</var>);</pre> - -<h3 id="Parámetros">Parámetros</h3> - -<dl> - <dt><code>depth</code> {{optional_inline}}</dt> - <dd>El nivel de profundidad que especifica qué tan profunda debe aplanarse una estructura de matriz anidada. El valor predeterminado es 1.</dd> -</dl> - -<h3 id="Valor_de_retorno">Valor de retorno</h3> - -<p>Una nueva matriz con los elementos de la sub-matriz concatenados en ella.</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Aplanar_matrices_anidadas">Aplanar matrices anidadas</h3> - -<pre class="brush: js">var arr1 = [1, 2, [3, 4]]; -arr1.flat(); -// [1, 2, 3, 4] - -var arr2 = [1, 2, [3, 4, [5, 6]]]; -arr2.flat(); -// [1, 2, 3, 4, [5, 6]] - -var arr3 = [1, 2, [3, 4, [5, 6]]]; -arr3.flat(2); -// [1, 2, 3, 4, 5, 6] -</pre> - -<h3 id="Aplanamiento_y_huecos_de_matriz">Aplanamiento y huecos de matriz</h3> - -<p>El método de aplanar elimina las ranuras vacías en las matrices:</p> - -<pre class="brush: js">var arr4 = [1, 2, , 4, 5]; -arr4.flat(); -// [1, 2, 4, 5] -</pre> - -<h2 id="Alternativa">Alternativa</h2> - -<h3 id="reduce_y_concat"><code>reduce</code> y <code>concat</code></h3> - -<pre class="brush: js">var arr1 = [1, 2, [3, 4]]; -arr1.flat(); - -//aplanar una matriz de nivel único -arr1.reduce((acc, val) => acc.concat(val), []);// [1, 2, 3, 4] - -//o -const flatSingle = arr => [].concat(...arr); -</pre> - -<p> </p> - -<pre class="brush: js">//para permitir el aplanamiento a nivel profundo use recursión con reduce y concat -var arr1 = [1,2,3,[1,2,3,4, [2,3,4]]]; - -function flattenDeep(arr1) { - return arr1.reduce((acc, val) => Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val), []); -} -flattenDeep(arr1); // [1, 2, 3, 1, 2, 3, 4, 2, 3, 4] -</pre> - -<p> </p> - -<pre class="brush: js">//aplanamiento profundo no recursivo usando un stack -var arr1 = [1,2,3,[1,2,3,4, [2,3,4]]]; -function flatten(input) { - const stack = [...input]; - const res = []; - while (stack.length) { - // elimina ultimo valor del stack - const next = stack.pop(); - if (Array.isArray(next)) { - // agrega de nuevo los items al array, sin modificar la entrada original - stack.push(...next); - } else { - res.push(next); - } - } - //invierte para restaurar el orden de entrada - return res.reverse(); -} -flatten(arr1);// [1, 2, 3, 1, 2, 3, 4, 2, 3, 4]</pre> - -<p> </p> - -<pre class="brush: js">//Aplanamiento profundo recursivo -function flatten(array) { - var flattend = []; - !(function flat(array) { - array.forEach(function(el) { - if (Array.isArray(el)) flat(el); - else flattend.push(el); - }); - })(array); - return flattend; -}</pre> - -<p> </p> - -<h2 id="Polyfill">Polyfill</h2> - -<pre class="brush: js">if (!Array.prototype.flat) { - Array.prototype.flat = function(depth) { - var flattend = []; - (function flat(array, depth) { - for (let el of array) { - if (Array.isArray(el) && depth > 0) { - flat(el, depth - 1); - } else { - flattend.push(el); - } - } - })(this, Math.floor(depth) || 1); - return flattend; - }; -}</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td><a href="https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flat"><code>Array.prototype.flat</code> proposal</a></td> - <td>Finalizado (4)</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Array.flat")}}</p> -</div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.flatMap()")}}</li> - <li>{{jsxref("Array.prototype.map()")}}</li> - <li>{{jsxref("Array.prototype.reduce()")}}</li> - <li>{{jsxref("Array.prototype.concat()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/flatmap/index.html b/files/es/web/javascript/referencia/objetos_globales/array/flatmap/index.html deleted file mode 100644 index 0a93f97675..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/flatmap/index.html +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: Array.prototype.flatMap() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/flatMap -tags: - - Array - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/flatMap ---- -<div>{{JSRef}} {{SeeCompatTable}}</div> - -<p>El método <code><strong>flatMap()</strong></code> primero mapea cada elemento usando una función de mapeo, luego aplana el resultado en una nueva matriz. Es idéntico a un <a href="/es/docs/Web/JavaScript/Reference/Global_Objects/Array/map">map</a> seguido de un <a href="/es/docs/Web/JavaScript/Reference/Global_Objects/Array/flatten">flatten </a>de profundidad 1, pero <code>flatMap</code> es a menudo útil y la fusión de ambos en un método es ligeramente más eficiente.</p> - -<p class="hidden">\{{EmbedInteractiveExample("pages/js/array-flatmap.html")}}</p> - -<p class="hidden"><span class="tlid-translation translation" lang="es"><span title="">La fuente de este ejemplo interactivo, se almacena en un repositorio de GitHub.</span> <span title="">Si desea contribuir al proyecto de ejemplos interactivos, clone </span></span><a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a><span class="tlid-translation translation" lang="es"><span title=""> y envíenos una solicitud de extracción.</span></span></p> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>var new_array = arr</var>.flatMap(function <var>callback(currentValue[, index[, array]]) { - // return element for new_array -}</var>[, <var>thisArg</var>])</pre> - -<h3 id="Parámetros">Parámetros</h3> - -<dl> - <dt><code>callback</code></dt> - <dd>Función que produce un elemento de la nueva matriz, tomando tres argumentos: - <dl> - <dt></dt> - <dt><code>currentValue</code></dt> - <dd>El elemento actual que se procesa en la matriz.</dd> - <dt><code>index</code>{{optional_inline}}</dt> - <dd>El índice del elemento actual que se procesa en la matriz.</dd> - <dt><code>array</code>{{optional_inline}}</dt> - <dd>La matriz <code>map</code> fue llamada.</dd> - </dl> - </dd> - <dt><code>thisArg</code>{{optional_inline}}</dt> - <dd>Valor para usar como <code>this</code> al ejecutar <code>callback</code>.</dd> -</dl> - -<h3 id="Valor_de_retorno">Valor de retorno</h3> - -<p>Una nueva matriz con cada elemento es el resultado de la función de devolución de llamada y se aplana a una profundidad de 1.</p> - -<h2 id="Descripción">Descripción</h2> - -<p>Ver {{jsxref("Array.prototype.map()")}} para una descripción detallada de la función de devolución de llamada. El método <code>flatMap</code> es idéntico a <code><a href="/es/docs/Web/JavaScript/Reference/Global_Objects/Array/map">map</a></code> seguido de una llamada a <code><a href="/es/docs/Web/JavaScript/Reference/Global_Objects/Array/flatten">flatten</a></code> de profundidad 1.</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="map_y_flatMap"><code>map</code> y <code>flatMap</code></h3> - -<pre class="brush: js">var arr1 = <span class="js source"><span class="function-call js meta"><span class="js meta"><span class="brace js meta square"><span>[</span></span><span class="constant decimal js numeric"><span>1</span></span><span class="comma delimiter js meta object"><span>,</span></span><span> </span><span class="brace js meta square"><span>2, 3, 4]; - -arr1.map(</span></span></span></span></span>x => [x * 2]<span class="js source"><span class="function-call js meta"><span class="js meta"><span class="brace js meta square"><span>);</span></span></span></span></span> -// [[2], [4], [6], [8]] - -arr1.flatMap(x => [x * 2]<span class="js source"><span class="function-call js meta"><span class="js meta"><span class="brace js meta square"><span>); -// [2, 4, 6, 8]</span></span></span></span></span> - -// solo un nivel es aplanado -arr1.flatMap(x => [[x * 2]]); -// [[2], [4], [6], [8]] -</pre> - -<div class="line"><span class="js source"><span class="comment double-slash js line"><span class="comment definition js punctuation"><span>//</span></span><span>=> [1, 2, 3, 4, 5, 6, 7, 8, 9]</span></span></span></div> - -<h2 id="Alternativa">Alternativa</h2> - -<h3 id="reduce_y_concat"><code>reduce</code> y <code>concat</code></h3> - -<pre class="brush: js">var arr1 = <span class="js source"><span class="function-call js meta"><span class="js meta"><span class="brace js meta square"><span>[</span></span><span class="constant decimal js numeric"><span>1</span></span><span class="comma delimiter js meta object"><span>,</span></span><span> </span><span class="brace js meta square"><span>2, 3, 4]; -</span></span></span></span></span> -arr1.flatMap(x => [x * 2]<span class="js source"><span class="function-call js meta"><span class="js meta"><span class="brace js meta square"><span>);</span></span></span></span></span> -// es equivalente a -arr1.reduce((acc, x) => acc.concat([x * 2]<span class="js source"><span class="function-call js meta"><span class="js meta"><span class="brace js meta square"><span>), []);</span></span></span></span></span> -<span class="js source"><span class="function-call js meta"><span class="js meta"><span class="brace js meta square"><span>// [2, 4, 6, 8]</span></span></span></span></span> -</pre> - -<div class="line"><span class="js source"><span class="comment double-slash js line"><span class="comment definition js punctuation"><span>//</span></span><span>=> [1, 2, 3, 4, 5, 6, 7, 8, 9]</span></span></span></div> - -<h2 id="Polyfill">Polyfill</h2> - -<p>Este polyfill necesita <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat" title="Array.prototype.flat()">Array.prototype.flat polyfill</a></p> - -<pre class="brush: js">if (!Array.prototype.flatMap) { - Array.prototype.flatMap = function() { - return Array.prototype.map.apply(this, arguments).flat(1); - }; -}</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td><a href="https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap"><code>Array.prototype.flatMap</code> </a></td> - <td>Finalizado (4)</td> - <td></td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Array.flatMap")}}</p> -</div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.flatten()")}}</li> - <li>{{jsxref("Array.prototype.map()")}}</li> - <li>{{jsxref("Array.prototype.reduce()")}}</li> - <li>{{jsxref("Array.prototype.concat()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/foreach/index.html b/files/es/web/javascript/referencia/objetos_globales/array/foreach/index.html deleted file mode 100644 index bc6b693176..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/foreach/index.html +++ /dev/null @@ -1,257 +0,0 @@ ---- -title: Array.prototype.forEach() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/forEach -tags: - - Array - - ECMAScript5 - - JavaScript - - JavaScript 1.6 - - Method - - Prototype - - Referencia - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/forEach ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>forEach()</strong></code> ejecuta la función indicada una vez por cada elemento del array.</p> - -<p>{{EmbedInteractiveExample("pages/js/array-foreach.html")}}</p> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox notranslate"><var>arr</var>.forEach(function <var>callback(currentValue, index, array) { - // tu iterador -}</var>[, <var>thisArg</var>]);</pre> - -<h3 id="Parameters" name="Parameters">Parámetros</h3> - -<dl> - <dt><code>callback</code></dt> - <dd>Función a ejecutar por cada elemento, que recibe tres argumentos:</dd> - <dd> - <dl> - <dt><code>currentValue</code></dt> - <dd>El elemento actual siendo procesado en el array.</dd> - <dt><code>index</code> {{optional_inline}}</dt> - <dd>El índice del elemento actual siendo procesado en el array.</dd> - <dt><code>array</code> {{optional_inline}}</dt> - <dd>El vector en el que <code>forEach()</code> esta siendo aplicado.</dd> - </dl> - </dd> - <dt><code>thisArg</code> {{optional_inline}}</dt> - <dd>Valor que se usará como <code>this</code> cuando se ejecute el <code>callback</code>.</dd> -</dl> - -<h3 id="Valor_de_retorno">Valor de retorno</h3> - -<p>{{jsxref("undefined")}}.</p> - -<h2 id="Descripción">Descripción</h2> - -<p><code>forEach()</code> ejecuta la función <code>callback</code> una vez por cada elemento presente en el array en orden ascendente. No es invocada para índices que han sido eliminados o que no hayan sido inicializados (Ej. sobre arrays <code>sparse</code>)</p> - -<p><code>callback</code> es invocada con tres argumentos:</p> - -<ol> - <li>el valor del elemento</li> - <li>el índice del elemento</li> - <li>el array que está siendo recorrido</li> -</ol> - -<p>Si un parámetro <code>thisArg</code> es proporcionado a <code>forEach</code>, será usado como el valor <code>this</code> para cada invocación de <code>callback</code> como si se llamara a <code>callback.call(thisArg, element, index, array)</code>. Si <code>thisArg</code> es <code>undefined</code> o <code>null</code>, el valor <code>this</code> dentro de la función depende si la función está o no en <a href="/es/docs/Web/JavaScript/Referencia/Modo_estricto" title="JavaScript/Strict_mode">modo estricto</a> (valor pasado si está en modo estricto, objeto global si está en modo no-estricto).</p> - -<p>El rango de elementos procesados por <code>forEach()</code> se establece antes de la primera invocación del <code>callback</code>. Los elementos que sean añadidos al vector después de que inicie la llamada a <code>forEach</code> no serán visitados por <code>callback</code>. Si los valores de los elementos existentes en el vector son modificados, el valor pasado al <code>callback</code> será el valor al momento de que forEach los visite; no se evaluarán los elementos borrados antes de ser visitados por <code>forEach</code>.</p> - -<p><code>forEach()</code> ejecuta la función <code>callback</code> una vez por cada elemento del array; a diferencia de {{jsxref("Array.prototype.map()", "map()")}} o {{jsxref("Array.prototype.reduce()", "reduce()")}} este siempre devuelve el valor {{jsxref("undefined")}} y no es encadenable. El típico uso es ejecutar los efectos secundarios al final de la cadena.</p> - -<p><code>foreach()</code> no muta/modifica el array desde el que es llamado (aunque <code>callback</code>, si se invoca, podría hacerlo).</p> - -<div class="note"><strong>Nota :</strong> No hay forma de detener o cortar un bucle <code>forEach</code> que no sea lanzar una excepción. Si necesita dicho comportamiento, el método <code>.forEach()</code> es la herramienta equivocada, use una simple iteración en su lugar. Si está probando los elementos del array para un predicado y necesita devolver un valor boleano, puede usar {{jsxref("Array.prototype.every()", "every()")}} o {{jsxref("Array.prototype.some()", "some()")}} en su lugar.</div> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Imprimiendo_el_contenido_de_un_array">Imprimiendo el contenido de un <code>array</code></h3> - -<p>El siguiente código imprime una línea por cada elemento en un array:</p> - -<pre class="brush:js notranslate">function logArrayElements(element, index, array) { - console.log("a[" + index + "] = " + element); -} -// Nótese que se evita el 2° índice ya que no hay ningún elemento en esa posición del array -[2, 5, , 9].forEach(logArrayElements); -// salida: -// a[0] = 2 -// a[1] = 5 -// a[2] = 9 -</pre> - -<h3 id="Usando_thisArg">Usando <code>thisArg</code></h3> - -<p>El siguiente ejemplo actualiza las propiedades del objeto por cada entrada en el array:</p> - -<pre class="brush:js notranslate">function Counter() { - this.sum = 0; - this.count = 0; -} -Counter.prototype.add = function(array) { - array.forEach(function(entry) { - this.sum += entry; - ++this.count; - }, this); - // ^---- Note -}; - -var obj = new Counter(); -obj.add([2, 5, 9]); -obj.count -// 3 -obj.sum -// 16</pre> - -<p>Nota: Dado que el parámetro <code>thisArg</code> (this) se referencia en el <code>forEach()</code>, será pasado al <code>callback</code> cuando se invoque, para utilizarse como su valor <code>this</code>.</p> - -<h3 id="Ejemplo_Función_que_copia_objetos">Ejemplo: Función que copia objetos</h3> - -<p>El siguiente código crea una copia de un objeto dado. Hay diferentes formas de crear una copia de un objeto, ésta es sólo una de ellas y sirve para explicar cómo funciona <code>Array.prototype.forEach </code>utilizando funciones <code>Object.*</code> de ECMAScript 5.</p> - -<pre class="brush: js notranslate">function copy(o){ - var copy = Object.create( Object.getPrototypeOf(o) ); - var propNames = Object.getOwnPropertyNames(o); - - propNames.forEach(function(name){ - var desc = Object.getOwnPropertyDescriptor(o, name); - Object.defineProperty(copy, name, desc); - }); - - return copy; -} - -var o1 = {a:1, b:2}; -var o2 = copy(o1); // o2 ahora se parece a o1 -</pre> - -<h3 id="Si_el_array_se_modifica_durante_la_iteración_otros_elementos_pueden_ser_omitidos.">Si el array se modifica durante la iteración, otros elementos pueden ser omitidos.</h3> - -<p>El siguiente ejemplo muestra por consola "uno", "dos", "cuatro". Cuando se alcanza el registro que contiene el valor "dos", el primer registro del array se desplaza, lo que hace que los registros restantes se muevan una posición. Debido a que el elemento "cuatro" está ahora en una posición anterior en el array, "tres" se omitirá. <code>forEach()</code> no hace una copia del array antes de iterar.</p> - -<pre class="brush:js notranslate">var words = ['uno', 'dos', 'tres', 'cuatro']; -words.forEach(function(word) { - console.log(word); - if (word === 'dos') { - words.shift(); - } -}); -// uno -// dos -// cuatro -</pre> - -<h2 id="Polyfill">Polyfill</h2> - -<p><code>forEach</code> se agregó de manera reciente al estándar ECMA-262; así que puede no estar presente en otras implementaciones del estándar. Se puede asegurar el uso del <span style="font-family: consolas,monaco,andale mono,monospace;">forEach</span> con tan solo agregar el siguiente código al inicio de los scripts, permitiendo así el uso de <span style="font-family: consolas,monaco,andale mono,monospace;">forEach</span> en implementaciones que no lo soportan de manera nativa. El algoritmo es el mismo que se especifica en la quinta versión de ECMA-262, asumiendo que {{jsxref("Object")}} y {{jsxref("TypeError")}} tienen sus valores originales y que <span style="font-family: consolas,monaco,andale mono,monospace;">callback.call </span>evalúa el valor original de {{jsxref("Function.prototype.call()")}}.</p> - -<pre class="brush: js notranslate">// Production steps of ECMA-262, Edition 5, 15.4.4.18 -// Reference: http://es5.github.com/#x15.4.4.18 -if (!Array.prototype.forEach) { - - Array.prototype.forEach = function forEach(callback, thisArg) { - 'use strict'; - var T, k; - - if (this == null) { - throw new TypeError("this is null or not defined"); - } - - var kValue, - // 1. Let O be the result of calling ToObject passing the |this| value as the argument. - O = Object(this), - - // 2. Let lenValue be the result of calling the Get internal method of O with the argument "length". - // 3. Let len be ToUint32(lenValue). - len = O.length >>> 0; // Hack to convert O.length to a UInt32 - - // 4. If IsCallable(callback) is false, throw a TypeError exception. - // See: http://es5.github.com/#x9.11 - if ({}.toString.call(callback) !== "[object Function]") { - throw new TypeError(callback + " is not a function"); - } - - // 5. If thisArg was supplied, let T be thisArg; else let T be undefined. - if (arguments.length >= 2) { - T = thisArg; - } - - // 6. Let k be 0 - k = 0; - - // 7. Repeat, while k < len - while (k < len) { - - // a. Let Pk be ToString(k). - // This is implicit for LHS operands of the in operator - // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk. - // This step can be combined with c - // c. If kPresent is true, then - if (k in O) { - - // i. Let kValue be the result of calling the Get internal method of O with argument Pk. - kValue = O[k]; - - // ii. Call the Call internal method of callback with T as the this value and - // argument list containing kValue, k, and O. - callback.call(T, kValue, k, O); - } - // d. Increase k by 1. - k++; - } - // 8. return undefined - }; -} - -</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.4.18', 'Array.prototype.forEach')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td>Definición inicial. Implementada en JavaScript 1.6.</td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.foreach', 'Array.prototype.forEach')}}</td> - <td>{{Spec2('ES6')}}</td> - <td></td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.foreach', 'Array.prototype.forEach')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td></td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div>{{Compat("javascript.builtins.Array.forEach")}}</div> - -<div id="compat-mobile"></div> - -<h2 id="Vea_también">Vea también</h2> - -<ul> - <li>{{jsxref("Array.prototype.find()")}}</li> - <li>{{jsxref("Array.prototype.findIndex()")}}</li> - <li>{{jsxref("Array.prototype.map()")}}</li> - <li>{{jsxref("Array.prototype.every()")}}</li> - <li>{{jsxref("Array.prototype.some()")}}</li> - <li>{{jsxref("Map.prototype.forEach()")}}</li> - <li>{{jsxref("Set.prototype.forEach()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/from/index.html b/files/es/web/javascript/referencia/objetos_globales/array/from/index.html deleted file mode 100644 index a11d0ebd53..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/from/index.html +++ /dev/null @@ -1,242 +0,0 @@ ---- -title: Array.from() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/from -tags: - - ECMAScript 2015 - - JavaScript - - Referencia - - Vector - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/from ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>Array.from()</strong></code> crea una nueva instancia de <code>Array</code> a partir de un objeto iterable.</p> - -<p>{{EmbedInteractiveExample("pages/js/array-from.html")}}</p> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><code>Array.from(arrayLike[, mapFn[, thisArg]]) -</code></pre> - -<h3 id="Parámetros">Parámetros</h3> - -<dl> - <dt><code>arrayLike</code></dt> - <dd>Objeto iterable para convertirlo en un array.</dd> - <dt><code>mapFn</code>{{Optional_inline}}</dt> - <dd>Función de mapa para llamar a cada elemento de la matriz.</dd> - <dt><code>thisArg</code>{{Optional_inline}}</dt> - <dd>Valor para usar como <code>this</code> al ejecutar <code>mapFn</code>.</dd> -</dl> - -<h3 id="Valor_de_retorno">Valor de retorno</h3> - -<p>Una nueva instancia de {{jsxref("Array")}}.</p> - -<h2 id="Descripción">Descripción</h2> - -<p><code>Array.from()</code> permite crear <code>Arrays</code> de:</p> - -<ul> - <li>Objetos array-like (objetos con propiedad <code>length</code> o elementos indexados).</li> - <li><a href="/es/docs/Web/JavaScript/Referencia/Iteration_protocols">Objetos iterables</a> (objetos de los cuales se pueden obtener sus elementos como {{jsxref("Map")}} y {{jsxref("Set")}}).</li> -</ul> - -<p><code>Array.from()</code> tiene un parámetro opcional <code>mapFn</code>, que te permite ejecutar una función {{jsxref("Array.prototype.map", "map")}} a cada elemento del array (o a la subclase del objeto) que se ha creado. Para aclararlo, <code>Array.from(obj, mapFn, thisArg)</code> es igual que <code>Array.from(obj).map(mapFn, thisArg)</code>, excepto en que éste no crea un array intermedio. Esto es importante para ciertas subclases de array, <a href="/es/docs/Web/JavaScript/Vectores_tipados">vectores tipados</a>, ya que el vector intermedio necesitaría tener valores truncados para trabajar con el tipo adecuado.</p> - -<p>La propiedad <code>length</code> del método <code>from()</code> es 1.</p> - -<p>En ES2015, la sintaxis de clase permite la subclasificación de clases integradas y definidas por el usuario; como resultado, los métodos estáticos como <code>Array.from</code> son "heredados" por subclases de <code>Array</code> y crean nuevas instancias de la subclase, no <code>Array</code>.</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Array_desde_un_String">Array desde un <code>String</code></h3> - -<pre class="brush: js">Array.from('foo'); -// [ "f", "o", "o" ]</pre> - -<h3 id="Array_desde_un_Set">Array desde un <code>Set</code></h3> - -<pre class="brush: js">const set = new Set(['foo', 'bar', 'baz', 'foo']); -Array.from(set); -// [ "foo", "bar", "baz" ]</pre> - -<h3 id="Array_desde_un_Map">Array desde un <code>Map</code></h3> - -<pre class="brush: js">const map = new Map([[1, 2], [2, 4], [4, 8]]); -Array.from(map); -// [[1, 2], [2, 4], [4, 8]] - -const mapper = new Map([['1', 'a'], ['2', 'b']]); -Array.from(mapper.values()); -// ['a', 'b']; - -Array.from(mapper.keys()); -// ['1', '2']; -</pre> - -<h3 id="Array_desde_un_objeto_Array-like_(argumentos)">Array desde un objeto Array-like (argumentos)</h3> - -<pre class="brush: js">function f() { - return Array.from(arguments); -} - -f(1, 2, 3); - -// [ 1, 2, 3 ]</pre> - -<h3 id="Usando_una_función_de_flecha_y_Array.from">Usando una función de flecha y <code>Array.from</code></h3> - -<pre class="brush: js">// Usando una función de flecha como función -// para manipular los elementos -Array.from([1, 2, 3], x => x + x); -// [2, 4, 6] - - -// Generar secuencia de números -// Puesto que el array se inicializa con `undefined` en cada posición, -// el valor de `v` a continuación será `undefined` -Array.from({length: 5}, (v, i) => i); -// [0, 1, 2, 3, 4] -</pre> - -<h3 id="Generador_de_secuencia_(rango)">Generador de secuencia (rango)</h3> - -<pre class="brush: js">// Función generadora de secuencia (comúnmente llamado "rango", ej. Clojure, PHP, etc.) -const range = (start, stop, step) => Array.from({ length: (stop - start) / step + 1}, (_, i) => start + (i * step)); - -// Genera un rango de números entre 0..4 -range(0, 4, 1); -// [0, 1, 2, 3, 4] - -// Genera un rango de números entre 1..10 con saltos de 2 -range(1, 10, 2); -// [1, 3, 5, 7, 9] - -// Generar el abecedario utilizando Array.from haciendo uso de que se ordena como secuencia -range('A'.charCodeAt(0), 'Z'.charCodeAt(0), 1).map(x => String.fromCharCode(x)); -// ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"] -</pre> - -<h2 id="Polyfill">Polyfill</h2> - -<p><code>Array.from</code> fue añadido en el estándar ECMA-262 en la 6ta edición (ES2015); así que no puede estar presente en otras implementaciones del estándar. Puedes usarlo insertando este código al comienzo de sus scripts, permitiendo el uso de <code>Array.from</code> en implementaciones que no lo soportan. Este algoritmo es el mismo especificado en ECMA-262, 6ta edición, suponiendo que <code>Object</code> y <code>TypeError</code> tengan sus valores originales y <code>callback.call</code> evalúa el valor original de {{jsxref("Function.prototype.call")}}. Adicionalmente, ya que verdaderos iterables pueden no ser polyficados, esta implementación no soporta iterables genéricos como definidos en la 6ta edición de ECMA-262.</p> - -<pre class="brush: js">// Pasos de producción de ECMA-262, Edición 6, 22.1.2.1 -// Referencia: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.from -if (!Array.from) { - Array.from = (function () { - var toStr = Object.prototype.toString; - var isCallable = function (fn) { - return typeof fn === 'function' || toStr.call(fn) === '[object Function]'; - }; - var toInteger = function (value) { - var number = Number(value); - if (isNaN(number)) { return 0; } - if (number === 0 || !isFinite(number)) { return number; } - return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number)); - }; - var maxSafeInteger = Math.pow(2, 53) - 1; - var toLength = function (value) { - var len = toInteger(value); - return Math.min(Math.max(len, 0), maxSafeInteger); - }; - - // La propiedad length del método from es 1. - return function from(arrayLike/*, mapFn, thisArg */) { - // 1. Deje a C ser el este valor. - var C = this; - - // 2. Deje que los elementos sean ToObject(arrayLike). - var items = Object(arrayLike); - - // 3. Retornar IfAbrupt(items). - if (arrayLike == null) { - throw new TypeError("Array.from requiere un objeto array-like - not null or undefined"); - } - - // 4. Si mapfn no está definida, entonces deja que sea false. - var mapFn = arguments.length > 1 ? arguments[1] : void undefined; - var T; - if (typeof mapFn !== 'undefined') { - // 5. si no - // 5. a If IsCallable(mapfn) es false, lanza una excepción TypeError. - if (!isCallable(mapFn)) { - throw new TypeError('Array.from: si hay mapFn, el segundo argumento debe ser una función'); - } - - // 5. b. Si thisArg se suministró, deje que T sea thisArg; si no, deje que T esté indefinido. - if (arguments.length > 2) { - T = arguments[2]; - } - } - - // 10. Let lenValue be Get(items, "length"). - // 11. Let len be ToLength(lenValue). - var len = toLength(items.length); - - // 13. If IsConstructor(C) is true, then - // 13. a. Let A be the result of calling the [[Construct]] internal method of C with an argument list containing the single item len. - // 14. a. Else, Let A be ArrayCreate(len). - var A = isCallable(C) ? Object(new C(len)) : new Array(len); - - // 16. Let k be 0. - var k = 0; - // 17. Repeat, while k < len… (also steps a - h) - var kValue; - while (k < len) { - kValue = items[k]; - if (mapFn) { - A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k); - } else { - A[k] = kValue; - } - k += 1; - } - // 18. Let putStatus be Put(A, "length", len, true). - A.length = len; - // 20. Return A. - return A; - }; - }()); -} -</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.from', 'Array.from')}}</td> - <td>{{Spec2('ES6')}}</td> - <td>Definición inicial.</td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.from', 'Array.from')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div> -<p>{{Compat("javascript.builtins.Array.from")}}</p> -</div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array")}}</li> - <li>{{jsxref("Array.prototype.map()")}}</li> - <li>{{jsxref("TypedArray.from()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/includes/index.html b/files/es/web/javascript/referencia/objetos_globales/array/includes/index.html deleted file mode 100644 index 3831c7d73d..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/includes/index.html +++ /dev/null @@ -1,181 +0,0 @@ ---- -title: Array.prototype.includes() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/includes -tags: - - Array - - JavaScript - - Prototipo - - Referencia - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/includes ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>includes()</strong></code> determina si una matriz incluye un determinado elemento, devuelve <code>true</code> o <code>false</code> según corresponda.</p> - -<p>{{EmbedInteractiveExample("pages/js/array-includes.html")}}</p> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre><var>arr</var>.includes(<var>searchElement[</var>, <var>fromIndex]</var>)</pre> - -<h3 id="Parámetros">Parámetros</h3> - -<dl> - <dt><code>valueToFind</code></dt> - <dd> - <p>El valor a buscar.</p> - - <div class="blockIndicator note"> - <p><strong>Nota: </strong>Al comparar cadenas de texto y caracteres, <code>includes()</code> <strong>distingue mayúsculas y minúsculas</strong>.</p> - </div> - </dd> - <dt><code>fromIndex</code> {{optional_inline}}</dt> - <dd>Posición en la matriz en la cuál se debe comenzar a buscar <code>valueToFind</code>; el primer caracter a buscar se encuentra en <code>fromIndex</code>. Un valor negativo inicia la búsqueda desde array.length + fromIndex en adelante. El valor por defecto es 0.</dd> -</dl> - -<h3 id="Valor_devuelto">Valor devuelto</h3> - -<p>Un {{jsxref ("Boolean")}} que es <code>true</code> si el valor <code>valueToFind</code> se encuentra dentro de la matriz (o la parte de la matriz indicada por el índice <code>fromIndex</code>, si se especifica). Todos los valores de cero se consideran iguales independientemente del signo (es decir, -0 se considera igual a 0 y +0), pero <code>false</code> no se considera igual a 0.</p> - -<div class="note"> -<p><strong>Note:</strong> Técnicamente hablando, <code>include()</code> usa el algoritmo <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Same-value-zero_equality">sameValueZero</a></code> para determinar si se encuentra el elemento dado</p> -</div> - -<h2 id="Ejemplos">Ejemplos</h2> - -<pre class="brush: js">[1, 2, 3].includes(2); // true -[1, 2, 3].includes(4); // false -[1, 2, 3].includes(3, 3); // false -[1, 2, 3].includes(3, -1); // true -[1, 2, NaN].includes(NaN); // true -</pre> - -<h3 id="fromIndex_es_mayor_o_igual_que_la_longitud_de_la_matriz"><code>fromIndex</code> es mayor o igual que la longitud de la matriz</h3> - -<p>Si <code>fromIndex</code> es mayor o igual que la longitud de la matriz, se devuelve <code>false</code>. No se buscará en la matriz.</p> - -<pre class="brush: js">var arr = ['a', 'b', 'c']; - -arr.includes('c', 3); // false -arr.includes('c', 100); // false</pre> - -<h3 id="El_índice_calculado_es_menor_que_0">El índice calculado es menor que 0</h3> - -<p>Si <code>fromIndex</code> es negativo, el índice calculado se calcula para usarse como una posición en la matriz en la cual comenzar a buscar <code>searchElement</code>. Si el índice calculado es menor que 0, se buscará la matriz completa.</p> - -<pre class="brush: js">// la longitud de la matriz es 3 -// fromIndex es -100 -// el índice calculado es 3 + (-100) = -97 - -var arr = ['a', 'b', 'c']; - -arr.includes('a', -100); // true -arr.includes('b', -100); // true -arr.includes('c', -100); // true</pre> - -<h3 id="includes()_utilizado_como_método_genérico"><code>includes()</code> utilizado como método genérico</h3> - -<p>El método <code>includes()</code> es intencionalmente genérico. No requiere que este valor sea un objeto Array, por lo que se puede aplicar a otros tipos de objetos (por ejemplo, objetos tipo array). El siguiente ejemplo ilustra el método <code>includes()</code> llamado en el objeto de argumentos de la función.</p> - -<pre class="brush: js">(function() { - console.log([].includes.call(arguments, 'a')); // true - console.log([].includes.call(arguments, 'd')); // false -})('a','b','c');</pre> - -<h2 id="Polyfill">Polyfill</h2> - -<pre class="brush: js">// https://tc39.github.io/ecma262/#sec-array.prototype.includes -if (!Array.prototype.includes) { - Object.defineProperty(Array.prototype, 'includes', { - value: function(searchElement, fromIndex) { - - if (this == null) { - throw new TypeError('"this" es null o no está definido'); - } - - // 1. Dejar que O sea ? ToObject(this value). - var o = Object(this); - - // 2. Dejar que len sea ? ToLength(? Get(O, "length")). - var len = o.length >>> 0; - - // 3. Si len es 0, devuelve false. - if (len === 0) { - return false; - } - - // 4. Dejar que n sea ? ToInteger(fromIndex). - // (Si fromIndex no está definido, este paso produce el valor 0.) - var n = fromIndex | 0; - - // 5. Si n ≥ 0, entonces - // a. Dejar que k sea n. - // 6. Else n < 0, - // a. Dejar que k sea len + n. - // b. Si k < 0, Dejar que k sea 0. - var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); - - function sameValueZero(x, y) { - return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y)); - } - - // 7. Repite, mientras k < len - while (k < len) { - // a. Dejar que elementK sea el resultado de ? Get(O, ! ToString(k)). - // b. Si SameValueZero(searchElement, elementK) es true, devuelve true. - if (sameValueZero(o[k], searchElement)) { - return true; - } - // c. Incrementa k por 1. - k++; - } - - // 8. Devuelve false - return false; - } - }); -}</pre> - -<p>Si necesita admitir motores de JavaScript realmente obsoletos que no son compatibles con <code><a href="/es/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty">Object.defineProperty</a></code>, es mejor no rellenar los métodos <code>Array.prototype</code>, ya que no puede hacerlos no enumerables.</p> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentarios</th> - </tr> - <tr> - <td>{{SpecName('ES7', '#sec-array.prototype.includes', 'Array.prototype.includes')}}</td> - <td>{{Spec2('ES7')}}</td> - <td>Definición inicial.</td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.includes', 'Array.prototype.includes')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td></td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div> -<p>{{Compat("javascript.builtins.Array.includes")}}</p> -</div> - -<div id="compat-mobile"></div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("TypedArray.prototype.includes()")}}</li> - <li>{{jsxref("String.prototype.includes()")}}</li> - <li>{{jsxref("Array.prototype.indexOf()")}}</li> - <li>{{jsxref("Array.prototype.find()")}}</li> - <li>{{jsxref("Array.prototype.findIndex()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/index.html b/files/es/web/javascript/referencia/objetos_globales/array/index.html deleted file mode 100644 index 45531c7a3e..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/index.html +++ /dev/null @@ -1,449 +0,0 @@ ---- -title: Array -slug: Web/JavaScript/Referencia/Objetos_globales/Array -tags: - - Array - - JavaScript - - Matriz unidimensional - - Referencia - - Vector -translation_of: Web/JavaScript/Reference/Global_Objects/Array ---- -<p>{{JSRef}}<br> - El objeto <strong><code>Array</code> </strong>de JavaScript es un objeto global que es usado en la construcción de <em>arrays</em>, que son objetos tipo lista de alto nivel.</p> - -<h2 id="Descripción">Descripción</h2> - -<p>Los <em>arrays</em> son objetos similares a una lista cuyo prototipo proporciona métodos para efectuar operaciones de recorrido y de mutación. Tanto la longitud como el tipo de los elementos de un <em>array</em> son variables. Dado que la longitud de un <em>array </em>puede cambiar en cualquier momento, y los datos se pueden almacenar en ubicaciones no contiguas, no hay garantía de que los <em>arrays </em>de JavaScript sean densos; esto depende de cómo el programador elija usarlos. En general estas características son cómodas, pero si, en su caso particular, no resultan deseables, puede considerar el uso de <em>arrays</em> con tipo.</p> - -<h3 id="Operaciones_habituales">Operaciones habituales</h3> - -<p><strong>Crear un Array</strong></p> - -<pre class="brush: js notranslate">let frutas = ["Manzana", "Banana"] - -console.log(frutas.length) -// 2 -</pre> - -<p><strong>Acceder a un elemento de Array mediante su índice</strong></p> - -<pre class="brush: js notranslate">let primero = frutas[0] -// Manzana - -let ultimo = frutas[frutas.length - 1] -// Banana</pre> - -<p><strong>Recorrer un Array</strong></p> - -<pre class="brush: js notranslate">frutas.forEach(function(elemento, indice, array) { - console.log(elemento, indice); -}) -// Manzana 0 -// Banana 1</pre> - -<p><strong>Añadir un elemento al final de un Array</strong></p> - -<pre class="brush: js notranslate">let nuevaLongitud = frutas<strong>.push</strong>('Naranja') // Añade "Naranja" al final -// ["Manzana", "Banana", "Naranja"]</pre> - -<p><strong>Eliminar el último elemento de un Array</strong></p> - -<pre class="brush: js notranslate">let ultimo = frutas<strong>.pop</strong>() // Elimina "Naranja" del final -// ["Manzana", "Banana"]</pre> - -<p><strong>Añadir un elemento al principio de un Array</strong></p> - -<pre class="brush: js notranslate">let nuevaLongitud = frutas<strong>.unshift</strong>('Fresa') // Añade "Fresa" al inicio -// ["Fresa" ,"Manzana", "Banana"] -</pre> - -<p><strong>Eliminar el primer elemento de un Array</strong></p> - -<pre class="brush: js notranslate">let primero = frutas<strong>.shift</strong>() // Elimina "Fresa" del inicio -// ["Manzana", "Banana"] -</pre> - -<p><strong>Encontrar el índice de un elemento del Array</strong></p> - -<pre class="brush: js notranslate">frutas.push('Fresa') -// ["Manzana", "Banana", "Fresa"] - -let pos = frutas<strong>.indexOf</strong>('Banana') // (pos) es la posición para abreviar -// 1</pre> - -<p><strong>Eliminar un único elemento mediante su posición</strong></p> - -<dl> - <dt> Ejemplo:</dt> - <dd>Eliminamos "Banana" del <em>array </em>pasándole dos parámetros: la posición del primer elemento que se elimina y el número de elementos que queremos eliminar. De esta forma, <code><strong>.splice</strong>(pos, 1)</code> empieza en la posición que nos indica el valor de la variable <code>pos</code> y elimina 1 elemento. En este caso, como <code>pos</code> vale 1, elimina un elemento comenzando en la posición 1 del <em>array,</em> es decir "Banana".</dd> -</dl> - -<pre class="brush: js notranslate">let elementoEliminado = frutas<strong>.splice</strong>(pos, 1) -// ["Manzana", "Fresa"]</pre> - -<p><strong>Eliminar varios elementos a partir de una posición</strong></p> - -<dl> - <dt> Nota:</dt> - <dd>Con <code><strong>.splice</strong>()</code> no solo se puede eliminar elementos del array, si no que también podemos extraerlos guardándolo en un nuevo array. ¡Ojo! que al hacer esto estaríamos modificando el array de origen.</dd> -</dl> - -<pre class="brush: js notranslate">let vegetales = ['Repollo', 'Nabo', 'Rábano', 'Zanahoria'] -console.log(vegetales) -// ["Repollo", "Nabo", "Rábano", "Zanahoria"] - -let pos = 1, numElementos = 2 - -let elementosEliminados = vegetales<strong>.splice</strong>(pos, numElementos) -// ["Nabo", "Rábano"] ==> Lo que se ha guardado en "elementosEliminados" - -console.log(vegetales) -// ["Repollo", "Zanahoria"] ==> Lo que actualmente tiene "vegetales" </pre> - -<p><strong>Copiar un Array</strong></p> - -<pre class="brush: js notranslate">let copiaArray = vegetales<strong>.slice</strong>(); -// ["Repollo", "Zanahoria"]; ==> Copiado en "copiaArray"</pre> - -<h3 id="Acceso_a_elementos_de_un_array">Acceso a elementos de un <em>array</em></h3> - -<p>Los índices de los <em>arrays</em> de JavaScript comienzan en cero, es decir, el índice del primer elemento de un <em>array</em> es <code>0</code>, y el del último elemento es igual al valor de la propiedad <code>length</code> del <em>array </em>restándole 1.</p> - -<p>Si se utiliza un número de índice no válido, se obtendrá <code>undefined</code>.</p> - -<pre class="brush: js notranslate">let arr = ['este es el primer elemento', 'este es el segundo elemento', 'este es el último elemento'] -console.log(arr[0]) // escribe en consola 'este es el primer elemento' -console.log(arr[1]) // escribe en consola 'este es el segundo elemento' -console.log(arr[arr.length - 1]) // escribe en consola 'este es el último elemento' -</pre> - -<p>Los elementos de un <em>array</em> pueden considerarse propiedades del objeto tanto como <code>toString</code> (sin embargo, para ser precisos, <code>toString()</code> es un método). Sin embargo, se obtendrá un error de sintaxis si se intenta acceder a un elemento de un <em>array</em> de la forma siguiente, ya que el nombre de la propiedad no sería válido:</p> - -<pre class="brush: js notranslate">console.log(arr.0) // error de sintaxis</pre> - -<p>No hay nada especial ni en los <em>arrays</em> de JavaScript ni en sus propiedades que ocasione esto. En JavaScript, las propiedades cuyo nombre comienza con un dígito no pueden referenciarse con la notación punto y debe accederse a ellas mediante la notación corchete.</p> - -<p>Por ejemplo, dado un objeto con una propiedad de nombre <code>'3d'</code>, sólo podría accederse a dicha propiedad con la notación corchete.</p> - -<pre class="brush: js notranslate">let decadas = [1950, 1960, 1970, 1980, 1990, 2000, 2010] -console.log(decadas.0) // error de sintaxis -console.log(decadas[0]) // funciona correctamente -</pre> - -<pre class="brush: js notranslate">renderizador.3d.usarTextura(modelo, 'personaje.png') -renderizador['3d'].usarTextura(modelo, 'personaje.png')</pre> - -<p>Obsérvese que, en el último ejemplo, ha sido necesario poner <code>'3d'</code> entre comillas. Es posible usar también comillas con los índices del los <em>arrays</em> de JavaScript (p. ej., <code>decadas['2']</code> en vez de <code>decadas[2]</code>), aunque no es necesario.</p> - -<p>El motor de JavaScript transforma en un string el 2 de <code>decadas[2]</code> a través de una conversión implícita mediante <code>toString</code>. Por tanto, <code>'2'</code> y <code>'02'</code> harían referencia a dos posiciones diferentes en el objeto <code>decadas</code>, y el siguiente ejemplo podría dar <code>true</code> como resultado:</p> - -<pre class="brush: js notranslate">console.log(decadas['2'] != decadas['02'])</pre> - -<h3 id="Relación_entre_length_y_las_propiedades_numéricas">Relación entre <code>length</code> y las propiedades numéricas</h3> - -<p>La propiedad <code>length</code> de un <em>array</em> de JavaScript está conectada con algunas otras de sus propiedades numéricas.</p> - -<p>Varios de los métodos propios de un <em>array</em> (p. ej., <code>join()</code>, <code>slice()</code>, <code>indexOf()</code>, etc.) tienen en cuenta el valor de la propiedad <code>length</code> de un array cuando se les llama.</p> - -<p>Otros métodos (p. ej., <code>push()</code>, <code>splice()</code>, etc.) modifican la propiedad <code>length</code> de un array.</p> - -<pre class="brush: js notranslate">const frutas = [] -frutas.push('banana', 'manzana', 'pera') - -console.log(frutas.length) // 3 -</pre> - -<p>Cuando se le da a una propiedad de un <em>array</em> JavaScript un valor que corresponda a un índice válido para el <em>array</em> pero que se encuentre fuera de sus límites, el motor actualizará el valor de la propiedad <code>length</code> como corresponda:</p> - -<pre class="brush: js notranslate">frutas[5] = 'fresa' -console.log(frutas[5]) // 'fresa' -console.log(Object.keys(frutas)) // ['0', '1', '2', '5'] -console.log(frutas.length) // 6 -</pre> - -<p>Si se aumenta el valor de <code>length</code>:</p> - -<pre class="brush: js notranslate">frutas.length = 10 -console.log(frutas) // ['banana', 'manzana', 'pera', <2 empty items>, 'fresa', <4 empty items>] -console.log(Object.keys(frutas)) // ['0', '1', '2', '5'] -console.log(frutas.length) // 10 -console.log(frutas[8]) // undefined -</pre> - -<p>Si se disminuye el valor de la propiedad <code>length</code> pueden eliminarse elementos:</p> - -<pre class="brush: js notranslate">frutas.length = 2 -console.log(Object.keys(frutas)) // ['0', '1'] -console.log(frutas.length) // 2 -</pre> - -<p>Hay más información sobre este tema en la página sobre <code><a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/length">Array.length</a></code>.</p> - -<h3 id="Creación_de_un_array_a_partir_de_una_expresión_regular">Creación de un <em>array</em> a partir de una expresión regular</h3> - -<p>El resultado de una búsqueda con una <code>RegExp</code> en un string puede crear un <em>array</em> de JavaScript. Este array tendrá propiedades y elementos que proporcionan información sobre la correspondencia encontrada. Para obtener un <em>array</em> de esta forma puede utilizarse <code>RegExp.exec()</code>, <code>String.match()</code> o <code>String.replace()</code>.</p> - -<p>El siguiente ejemplo, y la tabla que le sigue, pueden ayudar a comprender mejor las propiedades y elementos a los que nos referimos:</p> - -<pre class="brush: js notranslate">// Buscar una d seguida de una o más b y, al final, de otra d -// Recordar las b y la d final -// No distinguir mayúsculas y minúsculas - -const miRe = /d(b+)(d)/i -const miArray = miRe.exec('cdbBdbsbz')</pre> - -<p>Las propiedades y elementos que se obtienen de esta búsqueda son los siguientes:</p> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Propiedad/Elemento</th> - <th scope="col">Descripción</th> - <th scope="col">Ejemplo</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>input</code><br> - {{ReadOnlyInline}}</td> - <td>El string original sobre el que se ha realizado la búsqueda con la expresión regular</td> - <td><code>"cdbBdbsbz"</code></td> - </tr> - <tr> - <td><code>index</code><br> - {{ReadOnlyInline}}</td> - <td>El índice de la correspondencia en el string, siendo cero el de la primera posición.</td> - <td><code>1</code></td> - </tr> - <tr> - <td><code>[0]</code><br> - {{ReadOnlyInline}}</td> - <td>Los últimos caracteres que cumplen la correspondencia</td> - <td><code>"dbBd"</code></td> - </tr> - <tr> - <td><code>[1], ...[n]</code><br> - {{ReadOnlyInline}}</td> - <td>Elementos que indican las correspondencias de substrings entre paréntesis (si se han incluido) de la expresión regular. No hay límite al número de substrings entre paréntesis que se puedan utilizar.</td> - <td><code>[1]: "bB"<br> - [2]: "d"</code></td> - </tr> - </tbody> -</table> - -<h2 id="Constructor">Constructor</h2> - -<dl> - <dt><strong><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array">Array()</a></code></strong></dt> - <dd>Crea un nuevo objeto <code>Array</code>.</dd> -</dl> - -<h2 id="Propiedades_estáticas">Propiedades estáticas</h2> - -<dl> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/@@species">get Array[@@species]</a></code></dt> - <dd>La función del constructor se utiliza para crear objetos derivados.</dd> -</dl> - -<h2 id="Métodos_estáticos">Métodos estáticos</h2> - -<dl> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/from">Array.from()</a></code></dt> - <dd>Crea una nueva instancia de <code>Array</code> a partir de <code><em>similarAUnArray</em></code>, un objeto iterable o parecido a un <em>array.</em></dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/isArray">Array.isArray()</a></code></dt> - <dd>Devuelve <code>true</code> si <code><em>valor</em></code> es un <em>array</em>, y <code>false</code> en caso contrario.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/of">Array.of()</a></code></dt> - <dd>Crea una nueva instancia de <code>Array</code> con un número variable de parámetros, independientemente del número y del tipo de dichos parámetros.</dd> -</dl> - -<h2 id="Propiedades_de_instancia">Propiedades de instancia</h2> - -<dl> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/length">Array.prototype.length</a></code></dt> - <dd>Indica el número de elementos de un <em>array</em>.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/@@unscopables">Array.prototype[@@unscopables]</a></code></dt> - <dd>Símbolo que contiene todos los nombres de las propiedades que se excluyen de un ámbito de enlace <code><a href="/es/docs/Web/JavaScript/Referencia/Sentencias/with">with</a></code>.</dd> -</dl> - -<h2 id="Métodos_de_instancia">Métodos de instancia</h2> - -<dl> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/concat">Array.prototype.concat()</a></code></dt> - <dd>Devuelve un nuevo <em>array</em> que es la concatenación de aquél sobre el que se invoca, seguido de otros <em>array(s)</em> o valor(es).</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/copyWithin">Array.prototype.copyWithin()</a></code></dt> - <dd>Copia una secuencia de elementos de un <em>array</em> dentro del propio <em>array</em>.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/entries">Array.prototype.entries()</a></code></dt> - <dd>Devuelve un nuevo objeto <code>Array Iterator</code> que contiene los pares clave/valor para cada índice del <em>array</em>.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/every">Array.prototype.every()</a></code></dt> - <dd>Devuelve <code>true</code> si todos los elementos del <em>array</em> cumplen el predicado que recibe como parámetro.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/fill">Array.prototype.fill()</a></code></dt> - <dd>Asigna un <em><code>valor</code></em> estático a todos los elementos del <em>array</em> entre las posiciones <code><em>inicio</em></code> y <code><em>fin</em></code>.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/filter">Array.prototype.filter()</a></code></dt> - <dd>Devuelve un nuevo <em>array</em> que contiene todos los elementos de aquél para el cual se llama que cumplan el predicado que se le pasa como parámetro.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/find">Array.prototype.find()</a></code></dt> - <dd>Devuelve el primer <em><code>elemento</code></em> del <em>array </em>que cumpla el predicado que se pasa como parámetro, o <code>undefined</code> si ninguno lo cumple.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/findIndex">Array.prototype.findIndex()</a></code></dt> - <dd>Devuelve el índice del primer elemento del <em>array</em> que cumpla el predicado que se pasa como parámetro, o <code>-1</code> si nunguno lo cumple.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/forEach">Array.prototype.forEach()</a></code></dt> - <dd>Llama a la función pasada como parámetro para todos los elementos del <em>array.</em></dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/includes">Array.prototype.includes()</a></code></dt> - <dd>Determina si el <em>array</em> contiene el <code><em>valorBuscado</em></code> y devuelve <code>true</code> o <code>false</code> según sea el caso.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/indexOf">Array.prototype.indexOf()</a></code></dt> - <dd>Devuelve el índice del primer elemento del <em>array</em> que sea igual a <code><em>elementoBuscado</em></code>, o <code>-1</code> si no existe.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/join">Array.prototype.join()</a></code></dt> - <dd>Concatena en un string todos los elementos de un <em>array.</em></dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/keys">Array.prototype.keys()</a></code></dt> - <dd>Devuelve un nuevo <code>Array Iterator</code> que contiene las claves de cada índice del <em>array.</em></dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/lastIndexOf">Array.prototype.lastIndexOf()</a></code></dt> - <dd>Devuelve el índice del último elemento del <em>array</em> que sea igual a <code><em>elementoBuscado</em></code>, o <code>-1</code> si no existe.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/map">Array.prototype.map()</a></code></dt> - <dd>Devuelve un nuevo <em>array</em> que contiene el resultado de llamar a la función pasada como parámetro a todos los elementos del <em>array</em> sobre el que se invoca.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/pop">Array.prototype.pop()</a></code></dt> - <dd>Elimina el último elemento de un <em>array</em>, y devuelve dicho elemento.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/push">Array.prototype.push()</a></code></dt> - <dd>Añade uno o más elementos al final de un <em>array</em> y devuelve el nuevo valor de su propiedad <code>length</code>.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/reduce">Array.prototype.reduce()</a></code></dt> - <dd>Aplica la función pasada como parámetro a un <code><em>acumulador</em></code> y a cada valor del <em>array</em>, que se recorre de izquierda a derecha, para reducirlo a un único valor.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/reduceRight">Array.prototype.reduceRight()</a></code></dt> - <dd>Aplica la función pasada como parámetro a un <em><code>acumulador</code></em> y a cada valor del <em>array</em>, que se recorre de derecha a izquierda, para reducirlo a un único valor.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/reverse">Array.prototype.reverse()</a></code></dt> - <dd>Invierte el orden de los elementos de un <em>array</em> (el primero pasa a ser el último y el último a ser el primero) en el propio <em>array.</em> Este método modifica el array.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/shift">Array.prototype.shift()</a></code></dt> - <dd>Elimina el primer elemento de un <em>array</em>, y devuelve dicho elemento.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/slice">Array.prototype.slice()</a></code></dt> - <dd>Extrae una porción del <em>array</em> sobre el que se llama y devuelve un nuevo <em>array</em>.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/some">Array.prototype.some()</a></code></dt> - <dd>Devuelve <code>true</code> si al menos un elemento del <em>array</em> cumple con el predicado que se pasa como parámetro.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/sort">Array.prototype.sort()</a></code></dt> - <dd>Ordena los elementos de un <em>array</em>, modificando éste, y devuelve el array ordenado.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/splice">Array.prototype.splice()</a></code></dt> - <dd>Añade, borra o modifica elementos de un <em>array</em>.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/toLocaleString">Array.prototype.toLocaleString()</a></code></dt> - <dd>Devuelve un string adaptado a la configuración regional que representa el <em>array</em> y sus elementos. Redefine el método <code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/toLocaleString">Object.prototype.toLocaleString()</a></code>.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/toString">Array.prototype.toString()</a></code></dt> - <dd>Devuelve un string que representa el <em>array</em> y sus elementos. Redefine el método <code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/toString">Object.prototype.toString()</a></code>.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/unshift">Array.prototype.unshift()</a></code></dt> - <dd>Añada uno o más elementos al inicio de un <em>array</em> y devuelve el nuevo valor de <code>length</code> para el <em>array</em> resultante.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/values">Array.prototype.values()</a></code></dt> - <dd>Devuelve un nuevo objeto <code>Array Iterator</code> que contiene los valores para cada índice del <em>array</em>.</dd> - <dt><code><a href="/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/@@iterator">Array.prototype[@@iterator]()</a></code></dt> - <dd>Devuelve un nuevo objeto <code>Array Iterator</code> que contiene los valores para cada índice del <em>array</em>.</dd> -</dl> - -<p>Ejemplos</p> - -<h3 id="Creando_un_Arreglo" name="Creando_un_Arreglo">Creación de una matriz unidimensional</h3> - -<p>El siguiente ejemplo crea un <em>array </em><code>mensajes</code> con una longitud de 0, y luego asigna valores a <code>mensajes[0]</code> y a <code>mensajes[99]</code>, con lo que la longitud del <em>array</em> pasa a ser 100.</p> - -<pre class="brush: js notranslate">let mensajes = []; -mensajes[0] = "Hola"; -mensajes[99] = "mundo"; - -if (mensajes.length === 100) { - console.log("La longitud es de 100."); -} -</pre> - -<h3 id="Creaci.C3.B3n_de_un_arreglo_de_dos_dimensiones" name="Creaci.C3.B3n_de_un_arreglo_de_dos_dimensiones">Creación de una matriz de dos dimensiones</h3> - -<p>El siguiente ejemplo crea una matriz bidimensional que representa un tablero de ajedrez. El primer movimiento se realiza copiando la <code>'p'</code> de <code>tablero[6][4]</code> en <code>tablero[4][4]</code>. La posición <code>[6][4]</code> se limpia.</p> - -<pre class="notranslate">let tablero = [ - ['T','C','A','D','R','A','C','T'], - ['P','P','P','P','P','P','P','P'], - [' ',' ',' ',' ',' ',' ',' ',' '], - [' ',' ',' ',' ',' ',' ',' ',' '], - [' ',' ',' ',' ',' ',' ',' ',' '], - [' ',' ',' ',' ',' ',' ',' ',' '], - ['p','p','p','p','p','p','p','p'], - ['t','c','a','d','r','a','c','t'] ] - -console.log(tablero.join('\n') + '\n\n') - -// Adelantar dos posiciones el peón de rey -tablero[4][4] = tablero[6][4] -tablero[6][4] = ' ' -console.log(tablero.join('\n'))</pre> - -<p>Este es el resultado:</p> - -<pre class="eval notranslate">T,C,A,D,R,A,C,T -P,P,P,P,P,P,P,P - , , , , , , , - , , , , , , , - , , , , , , , - , , , , , , , -p,p,p,p,p,p,p,p -t,c,a,d,r,a,c,t - -P,P,P,P,P,P,P,P - , , , , , , , - , , , , , , , - , , , ,p, , , - , , , , , , , -p,p,p,p, ,p,p,p -t,c,a,d,r,a,c,t -</pre> - -<h3 id="Uso_de_un_array_para_tabular_un_conjunto_de_valores">Uso de un <em>array</em> para tabular un conjunto de valores</h3> - -<pre class="notranslate">valores = [] -for (let x = 0; x < 10; x++){ - valores.push([ - 2 ** x, - 2 * x ** 2 - ]) -} -console.table(valores)</pre> - -<p>da como resultado:</p> - -<pre class="notranslate">0 1 0 -1 2 2 -2 4 8 -3 8 18 -4 16 32 -5 32 50 -6 64 72 -7 128 98 -8 256 128 -9 512 162</pre> - -<p>(La primera columna es el índice).</p> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Publicación inicial</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ESDraft', '#sec-array-objects', 'Array')}}</td> - <td>ECMAScript 1</td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div class="hidden">La tabla de compatibilidad en esta página es generada desde datos estructurados. Si te gustaría contribuir a los datos, por favor visite <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> y envianos una solicitud de extracción(pull request).</div> - -<p>{{Compat("javascript.builtins.Array")}}</p> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>En la Guía de JavaScript: - <ul> - <li><a href="/es/docs/Web/JavaScript/Guide/Working_with_Objects#Indexing_object_properties">"Propiedades indexadas de un objeto"</a></li> - <li><a href="/es/docs/Web/JavaScript/Guide/Indexed_collections#Array_object">"Colecciones con índice: objeto Array"</a></li> - </ul> - </li> - <li><a href="/es/docs/JavaScript_typed_arrays">Arrays tipados</a></li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/indexof/index.html b/files/es/web/javascript/referencia/objetos_globales/array/indexof/index.html deleted file mode 100644 index 7aad7773b1..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/indexof/index.html +++ /dev/null @@ -1,248 +0,0 @@ ---- -title: Array.prototype.indexOf() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/indexOf -tags: - - Array - - JavaScript - - Method - - Prototype - - Referencia - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/indexOf ---- -<div>{{JSRef}}</div> - -<p>El método <strong>indexOf()</strong> retorna el primer índice en el que se puede encontrar un elemento dado en el array, ó retorna -1 si el elemento no esta presente.</p> - -<div class="note"> -<p><strong>Nota:</strong> Para el método String, ver {{jsxref("String.prototype.indexOf()")}}.</p> -</div> - -<h2 id="Syntax" name="Syntax">Sintaxis</h2> - -<pre class="syntaxbox"><code><em>array</em>.indexOf(<em>searchElement</em>[, <em>fromIndex</em>])</code></pre> - -<h3 id="Parameters" name="Parameters">Parámetros</h3> - -<dl> - <dt><code>searchElement</code></dt> - <dd>Elemento a encontrar en el array.</dd> - <dt><code>fromIndex</code> {{optional_inline}}</dt> - <dd>Indica el índice por el que se comienza la búsqueda. Por defecto es 0, por lo que se busca en todo el array. Si el índice es mayor o igual a la longitud del array, devuelve -1, ya que no se buscaría en el array. Si el valor es negativo, se toma restando posiciones desde el final del array. Hay que tener en cuenta que aunque el índice sea negativo, la búsqueda seguirá realizándose en un orden incremental. Si el índice calculado es menor de 0, la búsqueda se realizará por todo el array.</dd> -</dl> - -<h3 id="Valor_de_retorno">Valor de retorno</h3> - -<p>El primer índice del elemento en la matriz; -1 si no se encuentra.</p> - -<h2 id="Description" name="Description">Descripción</h2> - -<p><code>indexOf()</code> compara <code>searchElement</code> con los elementos del array usando <a href="/es/docs/Web/JavaScript/Referencia/Operadores/Comparison_Operators#Using_the_Equality_Operators" title="JavaScript/Reference/Operators/Comparison_Operators#Using_the_Equality_Operators">igualdad estricta</a> (el mismo método que cuando se usa ===, o el operador igualdad-triple).</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Usando_indexOf()">Usando <code>indexOf()</code></h3> - -<p>El siguiente ejemplo usa <code>indexof()</code> para localizar valores en un array </p> - -<pre class="brush: js">var array = [2, 9, 9]; -array.indexOf(2); // 0 -array.indexOf(7); // -1 -array.indexOf(9, 2); // 2 -array.indexOf(2, -1); // -1 -array.indexOf(2, -3); // 0</pre> - -<h3 id="Encontrar_todas_las_apariciones_de_un_elemento">Encontrar todas las apariciones de un elemento</h3> - -<pre class="brush: js">var indices = []; -var array = ['a', 'b', 'a', 'c', 'a', 'd']; -var element = 'a'; -var idx = array.indexOf(element); -while (idx != -1) { - indices.push(idx); - idx = array.indexOf(element, idx + 1); -} -console.log(indices); -// [0, 2, 4]</pre> - -<h3 id="Encontrar_si_un_elemento_existe_en_la_matriz_o_no_y_actualizar_la_matriz">Encontrar si un elemento existe en la matriz o no y actualizar la matriz</h3> - -<pre class="brush: js">function updateVegetablesCollection (veggies, veggie) { - if (veggies.indexOf(veggie) === -1) { - veggies.push(veggie); - console.log('La nueva colección de vegetales es: ' + veggies); - } else if (veggies.indexOf(veggie) > -1) { - console.log(veggie + ' ya existe en la colección de verduras.'); - } -} - -var veggies = ['patata', 'tomate', 'chiles', 'pimientoverde']; - -updateVegetablesCollection(veggies, 'espinaca'); -// La nueva colección de verduras es : patata, tomate, chiles, pimientoverde, espinaca -updateVegetablesCollection(veggies, 'espinaca'); -// La espinaca ya existe en la colección de verduras.</pre> - -<p> </p> - -<h2 id="Compatibility" name="Compatibility">Polyfill</h2> - -<p><code>indexOf()</code> se agregó al estándar ECMA-262 en la 5<sup>a</sup> edición; por tanto no está implementado en todos los navegadores. Puedes hacerlo funcionar insertando el siguiente código al comienzo de tus scripts, permitiendo usar <code>indexOf()</code> en implementaciones que no lo soporten de forma nativa. Este algoritmo es exáctamente el especificado en ECMA-262, 5ª edición, suponiendo que {{jsxref("Global_Objects/TypeError", "TypeError")}} y {{jsxref("Math.abs()")}} tienen sus valores originales.</p> - - -<pre class="brush: js">if (!Array.prototype.indexOf) { - Array.prototype.indexOf = function indexOf(member, startFrom) { - /* - En el modo no estricto, si la variable `this` es null o indefinida, entonces se establece - en el objeto ventana. De lo contrario, `this` se convierte automáticamente en un objeto. - En modo estricto, si la variable `this` es nula o indefinida, se lanza `TypeError`. - */ - if (this == null) { - throw new TypeError("Array.prototype.indexOf() - no se puede convertir `" + this + "` en objeto"); - } - - var - index = isFinite(startFrom) ? Math.floor(startFrom) : 0, - that = this instanceof Object ? this : new Object(this), - length = isFinite(that.length) ? Math.floor(that.length) : 0; - - if (index >= length) { - return -1; - } - - if (index < 0) { - index = Math.max(length + index, 0); - } - - if (member === undefined) { - /* - Dado que `member` no está definido, las claves que no existan tendrán el valor de `same` - como `member` y, por lo tanto, es necesario verificarlas. - */ - do { - if (index in that && that[index] === undefined) { - return index; - } - } while (++index < length); - } else { - do { - if (that[index] === member) { - return index; - } - } while (++index < length); - } - - return -1; - }; -}</pre> - -<p>Sin embargo, si está más interesado en todos los pequeños trozos técnicos definidos por el estándar ECMA, y está menos preocupado por el rendimiento o la concisión, entonces usted puede encontrar esta polyfill más descriptivo que sea más útil.</p> - -<pre class="brush: js">// Pasos de producción de ECMA-262, Edición 5, 15.4.4.14 -// Referencia: http://es5.github.io/#x15.4.4.14 -if (!Array.prototype.indexOf) { - Array.prototype.indexOf = function(searchElement, fromIndex) { - - var k; - - // 1. Dejar que `o` sea el resultado de llamar a ToObject - // pasando este valor como argumento. - if (this == null) { - throw new TypeError('"this" is null or not defined'); - } - - var o = Object(this); - - // 2. Dejar que `lenValue` sea el resultado de llamar al método interno - // de `o` con el argumento "length". - // 3. Dejar que len sea ToUint32(lenValue). - var len = o.length >>> 0; - - // 4. Si `len` es 0, devolver -1. - if (len === 0) { - return -1; - } - - // 5. Si se pasó el argumento `fromIndex`, deje que `n` sea - // ToInteger(fromIndex); si no, que `n` sea 0. - var n = fromIndex | 0; - - // 6. Si n >= len, devolver -1. - if (n >= len) { - return -1; - } - - // 7. Si n >= 0, entonces deja que `k` sea `n`. - // 8. Si no, n<0, deja que `k` sea `len - abs(n)`. - // Si `k` es menor que 0, entonces deja que `k` sea 0. - k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); - - // 9. Repite, mientras k < len - while (k < len) { - // a. Dejar que `Pk` sea ToString(k). - // Esto está implícito para los operandos LHS del operador in - // b. Dejar que kPresent sea el resultado de llamar al método - // interno `HasProperty` de `o` con el argumento `Pk`. - // Este paso se puede combinar con `c` - // c. Si kPresent es verdadero, entonces - // i. Dejar que `elementK` sea el resultado de llamar al método - // interno de `o` con el argumento ToString(k). - // ii. Deje que `same` sea el resultado de aplicar el - // Algoritmo de comparación de igualdad estricta a - // searchElement y elementK. - // iii. Si `same` es true, devuelve `k`. - if (k in o && o[k] === searchElement) { - return k; - } - k++; - } - return -1; - }; -}</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.4.14', 'Array.prototype.indexOf')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td>Definición inicial. Implementado en JavaScript 1.6.</td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}}</td> - <td>{{Spec2('ES6')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<p>{{Compat("javascript.builtins.Array.indexOf")}}</p> - -<h2 id="Notas_de_compatibilidad">Notas de compatibilidad</h2> - -<ul> - <li>Comenzando con Firefox 47 {{geckoRelease(47)}}, este método ya no devolverá <code>-0</code>. Por ejemplo, <code>[0] .indexOf (0, -0)</code> siempre devolverá <code>+0</code> ({{bug(1242043)}}).</li> -</ul> - -<div id="compat-mobile"> </div> - -<h2 id="See_also" name="See_also">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.lastIndexOf()")}}</li> - <li>{{jsxref("TypedArray.prototype.indexOf()")}}</li> - <li>{{jsxref("String.prototype.indexOf()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/isarray/index.html b/files/es/web/javascript/referencia/objetos_globales/array/isarray/index.html deleted file mode 100644 index b2a115a814..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/isarray/index.html +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: Array.isArray() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/isArray -tags: - - Array - - ECMAScript5 - - JavaScript - - Referencia - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/isArray ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>Array.isArray()</strong></code> determina si el valor pasado es un {{jsxref("Array")}}.</p> - -<pre class="brush: js">Array.isArray([1, 2, 3]); // true -Array.isArray({foo: 123}); // false -Array.isArray('foobar'); // false -Array.isArray(undefined); // false -</pre> - -<h2 id="Syntax" name="Syntax">Sintaxis</h2> - -<pre class="syntaxbox"><code>Array.isArray(<var>obj</var>)</code></pre> - -<h3 id="Parameters" name="Parameters">Parámetros</h3> - -<dl> - <dt><code>obj</code></dt> - <dd>El objeto a evaluar.</dd> -</dl> - -<h3 id="Description" name="Description">Valor de retorno</h3> - -<p><code>true</code> si el objeto es un {{jsxref("Array")}}; en caso contrario, <code>false</code>.</p> - -<h2 id="Description" name="Description">Descripción</h2> - -<p>Si el objeto es un {{jsxref("Array")}}, devuelve <code>true</code>; <code>false</code>, en cualquier otro caso.</p> - -<p>Vea el artículo <a href="http://web.mit.edu/jwalden/www/isArray.html">“Determining with absolute accuracy whether or not a JavaScript object is an array”</a> para más detalles.</p> - -<h2 id="Examples" name="Examples">Ejemplos</h2> - -<pre class="brush: js">// las siguientes llamadas devuelven true -Array.isArray([]); -Array.isArray([1]); -Array.isArray(new Array()); -Array.isArray(new Array('a', 'b', 'c', 'd')); -Array.isArray(new Array(3)); -// Hecho poco conocido: Array.prototype es también un array: -Array.isArray(Array.prototype); - -// todas las siguientes llamadas devuelven false -Array.isArray(); -Array.isArray({}); -Array.isArray(null); -Array.isArray(undefined); -Array.isArray(17); -Array.isArray('Array'); -Array.isArray(true); -Array.isArray(false); -Array.isArray({ __proto__: Array.prototype }); -</pre> - -<h3 id="instanceof_vs_isArray"><code>instanceof</code> vs <code>isArray</code></h3> - -<p>Al comprobar una instancia <code>Array</code>, <code>Array.isArray</code> es más recomendado que <code>instanceof</code> porque funciona a través de <code>iframes</code>.</p> - -<pre class="brush: js">var iframe = document.createElement('iframe'); -document.body.appendChild(iframe); -xArray = window.frames[window.frames.length - 1].Array; -var arr = new xArray(1,2,3); // [1,2,3] - -// Comprobando correctamente un Array -Array.isArray(arr); // true -// Considerado peligroso, porque no funciona a través de iframes -arr instanceof Array; // false -</pre> - -<h2 id="Polyfill" name="Polyfill">Polyfill</h2> - -<p>Ejecutar el siguiente código antes de cualquier otro código creará un <code>Array.isArray()</code> si no está disponible de forma nativa.</p> - -<pre class="brush: js">if (!Array.isArray) { - Array.isArray = function(arg) { - return Object.prototype.toString.call(arg) === '[object Array]'; - }; -} -</pre> - -<h2 id="Especificaciones" name="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.3.2', 'Array.isArray')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td>Definición inicial. Implementado en JavaScript 1.8.5.</td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.isarray', 'Array.isArray')}}</td> - <td>{{Spec2('ES6')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.isarray', 'Array.isArray')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Browser_compatibility" name="Browser_compatibility">Compatibilidad con navegadores</h2> - -<div>{{Compat("javascript.builtins.Array.isArray")}}</div> - -<h2 id="See_also" name="See_also">Vea también</h2> - -<ul> - <li>{{jsxref("Array")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/join/index.html b/files/es/web/javascript/referencia/objetos_globales/array/join/index.html deleted file mode 100644 index ea9ba3e544..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/join/index.html +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: Array.prototype.join() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/join -tags: - - Array - - JavaScript - - Matriz - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/join ---- -<div>{{JSRef}}</div> - -<p>El método <strong><code>join()</code></strong> une todos los elementos de una matriz (o un <a href="/es/docs/Web/JavaScript/Guide/Indexed_collections#Working_with_array-like_objects">objeto similar a una matriz</a>) en una cadena y devuelve esta cadena.</p> - -<p>{{EmbedInteractiveExample("pages/js/array-join.html")}}</p> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>arr.join([separator])</var></pre> - -<h3 id="Parámetros">Parámetros</h3> - -<dl> - <dt><code>separador</code> {{optional_inline}}</dt> - <dd>Es una <code>cadena</code> usada para separar cada uno de los elementos del arreglo. El separador es convertido a una <code>cadena</code> si es necesario. Si este se omite, los elementos del arreglo son separados con una coma (","). Si el <code>separador</code> es una <code>cadena</code> vacía todos los elementos son unidos sin ningún carácter entre ellos.</dd> -</dl> - -<h3 id="Valor_de_retorno">Valor de retorno</h3> - -<p>Una cadena con todos los elementos de la matriz unidos. Si <code><em>arr</em>.length</code> es <code>0</code>, se devuelve la cadena vacía.</p> - -<h2 id="Descripción">Descripción</h2> - -<p>Las conversiones de cadena de todos los elementos de la matriz se unen en una cadena.</p> - -<div class="warning"> -<p>Si un elemento <code>no está definido</code> o es <code>nulo</code>, se convierte en la cadena vacía.</p> -</div> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Uniendo_un_arreglo_cuatro_veces_en_diferentes_formas">Uniendo un arreglo cuatro veces en diferentes formas</h3> - -<p>El siguiente ejemplo crea un arreglo <code>a</code> con tres elementos para luego unir el arreglo cuatro veces: usando el separador predeterminado, luego una coma y un espacio, luego un signo de suma, y finalmente una cadena vacío.</p> - -<pre class="brush: js">var a = ['Viento', 'Lluvia', 'Fuego']; -var miVar1 = a.join(); // asigna 'Viento,Lluvia,Fuego' a miVar1 -var miVar2 = a.join(', '); // asigna 'Viento, Lluvia, Fuego' a miVar2 -var miVar3 = a.join(' + '); // asigna 'Viento + Lluvia + Fuego' a miVar3 -var miVar4 = a.join(''); // asigna 'VientoLluviaFuego' a miVar4 -</pre> - -<h3 id="Unirse_a_un_objeto_tipo_matriz">Unirse a un objeto tipo matriz</h3> - -<p>El siguiente ejemplo une un objeto parecido a una matriz (<code><a href="/es/docs/Web/JavaScript/Reference/Functions/arguments">argumentos</a></code>), llamando a {{jsxref("Function.prototype.call")}} en <code>Array.prototype.join</code>.</p> - -<pre class="brush: js">function f(a, b, c) { - var s = Array.prototype.join.call(arguments); - console.log(s); // '1,a,true' -} -f(1, 'a', true); -//resultado esperado: "1,a,true"</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>ECMAScript 1st Edition</td> - <td>Estándar</td> - <td>Definición inicial. Implementado en JavaScript 1.1.</td> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.4.5', 'Array.prototype.join')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.join', 'Array.prototype.join')}}</td> - <td>{{Spec2('ES6')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.join', 'Array.prototype.join')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div>{{Compat("javascript.builtins.Array.join")}}</div> - -<div id="compat-desktop"> </div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("String.prototype.split()")}}</li> - <li>{{jsxref("Array.prototype.toString()")}}</li> - <li>{{jsxref("TypedArray.prototype.join()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/keys/index.html b/files/es/web/javascript/referencia/objetos_globales/array/keys/index.html deleted file mode 100644 index ff7cb593f5..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/keys/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Array.prototype.keys() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/keys -tags: - - Array - - ECMAScript 2015 - - Iterator - - JavaScript - - Matriz - - Prototipo - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/keys ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>keys()</strong></code> devuelve un nuevo objeto <code><strong>Array Iterator</strong></code> que contiene las claves de índice con las que acceder a cada elemento en el array.</p> - -<p>{{EmbedInteractiveExample("pages/js/array-keys.html")}}</p> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>arr</var>.keys()</pre> - -<h3 id="Valor_de_retorno">Valor de retorno</h3> - -<p>Un nuevo objeto iterador {{jsxref("Array")}}.</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Uso_básico">Uso básico</h3> - -<pre class="brush: js">var arr = ['a', 'b', 'c']; -var iterator = arr.keys(); - -console.log(iterator.next()); // { value: 0, done: false } -console.log(iterator.next()); // { value: 1, done: false } -console.log(iterator.next()); // { value: 2, done: false } -console.log(iterator.next()); // { value: undefined, done: true } -</pre> - -<h3 id="El_iterador_no_ignora_los_huecos">El iterador no ignora los huecos</h3> - -<pre class="brush: js">var arr = ['a', , 'c']; -var sparseKeys = Object.keys(arr); -var denseKeys = [...arr.keys()]; -console.log(sparseKeys); // ['0', '2'] -console.log(denseKeys); // [0, 1, 2] -</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.keys', 'Array.prototype.keys')}}</td> - <td>{{Spec2('ES6')}}</td> - <td>Definición inicial.</td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.keys', 'Array.prototype.keys')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div>{{Compat("javascript.builtins.Array.keys")}}</div> - -<div id="compat-mobile"> </div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.values()")}}</li> - <li>{{jsxref("Array.prototype.entries()")}}</li> - <li><a href="/es/docs/Web/JavaScript/Reference/Iteration_protocols">Protocolos de iteración</a></li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/lastindexof/index.html b/files/es/web/javascript/referencia/objetos_globales/array/lastindexof/index.html deleted file mode 100644 index 19667a54af..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/lastindexof/index.html +++ /dev/null @@ -1,164 +0,0 @@ ---- -title: Array.prototype.lastIndexOf() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/lastIndexOf -tags: - - Array - - Arreglo - - ECMAScript 5 - - JavaScript - - Matriz - - Prototipo - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>lastIndexOf()</strong></code> devuelve el último índice en el que un cierto elemento puede encontrarse en el arreglo, ó <code>-1</code> si el elemento no se encontrara. El arreglo es recorrido en sentido contrario, empezando por el índice <code>fromIndex</code>.</p> - -<p>{{EmbedInteractiveExample("pages/js/array-lastindexof.html")}}</p> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>arr.lastIndexOf(searchElement) arr.lastIndexOf(searchElement, fromIndex)</var></pre> - -<h3 id="Parámetros">Parámetros</h3> - -<dl> - <dt><code>searchElement</code></dt> - <dd>Elemento a encontrar en el arreglo.</dd> - <dt><code>fromIndex</code> {{optional_inline}}</dt> - <dd>El índice en el que empieza la búsqueda en sentido contrario. Por defecto la longitud del arreglo menos uno (<code>arr.length - 1</code>), es decir, todo el arreglo será recorrido. Si el índice es mayor o igual que la longitud del arreglo, todo el arreglo será recorrido. Si es un valor negatigo, se usará como inicio del desplazamiento el final del arreglo. Darse cuenta que aún cuando el índice es negativo, el arreglo todavía será recorrido desde atrás hacia delante. Si el índice calculado es menor de <code>0</code>, se devolverá <code>-1</code>, es decir, el arreglo no será recorrido.</dd> -</dl> - -<h3 id="Valor_de_retorno">Valor de retorno</h3> - -<p>El último índice del elemento en el arreglo; <code>-1</code> si no se encuentra.</p> - -<h2 id="Descripción">Descripción</h2> - -<p><code>lastIndexOf</code> compara <code>searchElement</code> con los elementos del arreglo usando <a href="/es/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Using_the_Equality_Operators">igualdad estricta</a> (el mismo método es usado para la ===, operador triple igualdad).</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Usando_lastIndexOf">Usando <code>lastIndexOf</code></h3> - -<p>El siguiente ejemplo usa <code>lastIndexOf</code> para encontrar valores en un arreglo.</p> - -<pre class="brush: js">var array = [2, 5, 9, 2]; -array.lastIndexOf(2); // 3 -array.lastIndexOf(7); // -1 -array.lastIndexOf(2, 3); // 3 -array.lastIndexOf(2, 2); // 0 -array.lastIndexOf(2, -2); // 0 -array.lastIndexOf(2, -1); // 3 -</pre> - -<h3 id="Encontrar_todas_las_apariciones_de_un_elemento">Encontrar todas las apariciones de un elemento</h3> - -<p>El siguiente ejemplo uses <code>lastIndexOf</code> encuentra todos los índices de un elemento en un arreglo dado, usando {{jsxref("Array.prototype.push", "push")}} añadiéndolos a otro arreglo como elementos encontrados.</p> - -<pre class="brush: js">var indices = []; -var array = ['a', 'b', 'a', 'c', 'a', 'd']; -var element = 'a'; -var idx = array.lastIndexOf(element); -while (idx != -1) { - indices.push(idx); - idx = (idx > 0 ? array.lastIndexOf(element, idx - 1) : -1); -} - -console.log(indices); -// [4, 2, 0] -</pre> - -<p>Darse cuenta que en este caso tenemos que tratar <code>idx == 0</code> de forma separada por que el elemento siempre será encontrado independiemente del valor del parámetro <code>fromIndex</code> si este es el primer elemento del arreglo. Diferente de como se trata en el método {{jsxref("Array.prototype.indexOf", "indexOf")}}.</p> - -<h2 id="Polyfill">Polyfill</h2> - -<p><code>lastIndexOf</code> fue añadido al estándar ECMA-262 en la 5ª edición; por tanto puede que no este presente en otras implementaciones del estándar. Puedes solucionarlo escribiendo el siguiente código al principio de tus scripts, pudiendo usar <code>lastIndexOf</code> en implementaciones que no tiene soporte de forma nativa. Este algoritmo es exactamente el especificado en ECMA-262, 5ª edición, suponiendo que {{jsxref("Object")}}, {{jsxref("TypeError")}}, {{jsxref("Number")}}, {{jsxref("Math.floor")}}, {{jsxref("Math.abs")}}, y {{jsxref("Math.min")}} tienen sus valores originales.</p> - -<pre class="brush: js">// Pasos de producción de ECMA-262, Edición 5, 15.4.4.15 -// Referencia: http://es5.github.io/#x15.4.4.15 -if (!Array.prototype.lastIndexOf) { - Array.prototype.lastIndexOf = function(searchElement /*, fromIndex*/) { - 'use strict'; - - if (this === void 0 || this === null) { - throw new TypeError(); - } - - var n, k, - t = Object(this), - len = t.length >>> 0; - if (len === 0) { - return -1; - } - - n = len - 1; - if (arguments.length > 1) { - n = Number(arguments[1]); - if (n != n) { - n = 0; - } - else if (n != 0 && n != (1 / 0) && n != -(1 / 0)) { - n = (n > 0 || -1) * Math.floor(Math.abs(n)); - } - } - - for (k = n >= 0 ? Math.min(n, len - 1) : len - Math.abs(n); k >= 0; k--) { - if (k in t && t[k] === searchElement) { - return k; - } - } - return -1; - }; -} -</pre> - -<p>De nuevo, darse cuenta que esta implementación tiene como objeto la completa compatibilidad con <code>lastIndexOf</code> en Firefox y el motor SpiderMonkey JavaScript, en particular en varios casos que son posiblemente extremos. Si pretendes usar esta funcionalidad en aplicaciones reales, es posible que puedes calcular <code>from</code> con código menos complejo si ignoras estos casos.</p> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.4.15', 'Array.prototype.lastIndexOf')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td>Definición inicial. Implementado en JavaScript 1.6.</td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}}</td> - <td>{{Spec2('ES6')}}</td> - <td></td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td></td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div>{{Compat("javascript.builtins.Array.lastIndexOf")}}</div> - -<div id="compat-mobile"></div> - -<h2 id="Notas_de_compatibilidad">Notas de compatibilidad</h2> - -<ul> - <li>Desde Firefox 47 {{geckoRelease(47)}}, el método ya no devolverá <code>-0</code>. Por ejemplo, <code>[0].lastIndexOf(0, -0)</code> siempre devolverá <code>+0</code> ({{bug(1242043)}}).</li> -</ul> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.indexOf()")}}</li> - <li>{{jsxref("TypedArray.prototype.lastIndexOf()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/length/index.html b/files/es/web/javascript/referencia/objetos_globales/array/length/index.html deleted file mode 100644 index cbbb1a46db..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/length/index.html +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: Array.prototype.length -slug: Web/JavaScript/Referencia/Objetos_globales/Array/length -tags: - - Array - - JavaScript - - Propiedad - - Referencia - - Vector -translation_of: Web/JavaScript/Reference/Global_Objects/Array/length ---- -<div>{{JSRef}}</div> - -<p>La propiedad <code><strong>length</strong></code> de un objeto que es una instancia de tipo Array establece o devuelve la cantidad de elementos en esa matriz. El valor es un entero sin signo de 32 bits que siempre es numéricamente mayor que el índice más alto en la matriz.</p> - -<div> -<p>{{EmbedInteractiveExample("pages/js/array-length.html")}}</p> -</div> - -<h2 id="Description" name="Description">Descripción</h2> - -<p>El valor de la propiedad <code>length</code> es un número entero con un signo positivo y un valor menor que 2 a la 32<sup>a</sup> potencia (2<sup>32</sup>).</p> - -<pre class="brush: js">var namelistA = new Array(4294967296); //2 a la 32a potencia = 4294967296 -var namelistC = new Array(-100) //signo negativo - -console.log(namelistA.length); //RangeError: longitud de la matriz inválida -console.log(namelistC.length); //RangeError: longitud de la matriz inválida - - - -var namelistB = []; -namelistB.length = Math.pow(2,32)-1; //establecer una longitud de la matriz menor que 2 a la 32ª potencia -console.log(namelistB.length); - -//4294967295</pre> - -<p>Puedes establecer la propiedad <code>length</code> para truncar una matriz unidimensional en cualquier momento. Cuando extiende una matriz cambiando su propiedad <code>length</code>, el número de elementos reales aumenta; por ejemplo, si se establece <code>length</code> en 3 cuando actualmente es 2, la matriz ahora contiene 3 elementos, lo que hace que el tercer elemento sea <code>undefined</code>.</p> - -<pre class="brush: js">var arr = [1, 2, 3]; -printEntries(arr); - -arr.length = 5; // establecer la longitud de la matriz en 5 mientras que actualmente es 3. -printEntries(arr); - -function printEntries(arr) { - var length = arr.length; - for (var i = 0; i < length; i++) { - console.log(arr[i]); - } - console.log('=== printed ==='); -} - -// 1 -// 2 -// 3 -// === impreso === -// 1 -// 2 -// 3 -// undefined -// undefined -// === impreso ===</pre> - -<p>Pero, la propiedad <code>length</code> no necesariamente indica el número de valores definidos en la matriz. Ver también <a href="/es/docs/Web/JavaScript/Reference/Global_Objects/Array#Relationship_between_length_and_numerical_properties" title="Relationship between length and numerical properties">Relación entre <code>length</code> y las propiedades numéricas</a>.</p> - -<p>{{js_property_attributes(1, 0, 0)}}</p> - -<ul> - <li><code>Sobrescribir</code>: si este atributo se establece en <code>false</code>, el valor de la propiedad no se puede cambiar.</li> - <li><code>Configurable</code>: si este atributo se establece en <code>false</code>, cualquier intento de eliminar la propiedad o cambiar sus atributos (<code>Sobrescribir</code>, <code>Configurable </code>o <code>Numerable</code>) fallará.</li> - <li><code>Numerable</code>: si este atributo se establece en <code>true</code>, la propiedad se repetirá durante los bucles <a href="/es/docs/Web/JavaScript/Reference/Statements/for">for</a> o <a href="/es/docs/Web/JavaScript/Reference/Statements/for...in">for..in</a>.</li> -</ul> - -<h2 id="Examples" name="Examples">Ejemplos</h2> - -<h3 id="Example:_Iterating_over_an_array" name="Example:_Iterating_over_an_array">Iterando sobre una matriz</h3> - -<p>En el siguiente ejemplo, la matriz <code>numbers</code> se itera a través de la propiedad <code>length</code>. El valor en cada elemento se duplica.</p> - -<pre class="brush: js">var numbers = [1, 2, 3, 4, 5]; -var length = numbers.length; -for (var i = 0; i < length; i++) { - numbers[i] *= 2; -} -// numbers ahora es [2, 4, 6, 8, 10]</pre> - -<h3 id="Example:_Shortening_an_array" name="Example:_Shortening_an_array">Acortando una matriz</h3> - -<p>El siguiente ejemplo acorta los <code>numbers</code> de la matriz a una longitud de <code>3</code> si la longitud actual es mayor que <code>3</code>.</p> - -<pre class="brush: js">var numbers = [1, 2, 3, 4, 5]; - -if (numbers.length > 3) { - numbers.length = 3; -} - -console.log(numbers); // [1, 2, 3] -console.log(numbers.length); // 3</pre> - -<h2 id="Specifications" name="Specifications">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>ECMAScript 1ra Edición.</td> - <td>Estándar</td> - <td>Definición inicial.</td> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.5.2', 'Array.length')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-properties-of-array-instances-length', 'Array.length')}}</td> - <td>{{Spec2('ES6')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-properties-of-array-instances-length', 'Array.length')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Browser_compatibility" name="Browser_compatibility">Compatibilidad con navegadores</h2> - -<div>{{Compat("javascript.builtins.Array.length")}}</div> - -<div id="compat-mobile"> </div> - -<h2 id="See_also" name="See_also">Ver también</h2> - -<ul> - <li>{{jsxref("Array")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/map/index.html b/files/es/web/javascript/referencia/objetos_globales/array/map/index.html deleted file mode 100644 index 8b958a4945..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/map/index.html +++ /dev/null @@ -1,360 +0,0 @@ ---- -title: Array.prototype.map() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/map -tags: - - Array - - Arreglo - - Callback - - ECMAScript5 - - Polifill - - Prototype - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/map ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>map()</strong></code> crea un nuevo array con los resultados de la llamada a la función indicada aplicados a cada uno de sus elementos.</p> - -<pre class="brush: js">var numbers = [1, 5, 10, 15]; -var doubles = numbers.map(function(x) { - return x * 2; -}); -// doubles is now [2, 10, 20, 30] -// numbers is still [1, 5, 10, 15] - -var numbers = [1, 4, 9]; -var roots = numbers.map(function(num) { - return Math.sqrt(num); -}); -// roots is now [1, 2, 3] -// numbers is still [1, 4, 9] -</pre> - -<h2 id="Syntax" name="Syntax">Sintaxis</h2> - -<pre class="syntaxbox"><var>var nuevo_array = arr</var>.map(function <var>callback(currentValue, index, array) { - // Elemento devuelto de nuevo_array -}</var>[, <var>thisArg</var>])</pre> - -<h3 id="Parameters" name="Parameters">Parámetros</h3> - -<dl> - <dt><code>callback</code></dt> - <dd>Función que producirá un elemento del nuevo array, recibe tres argumentos:</dd> - <dd> - <dl> - <dt><code>currentValue</code></dt> - <dd>El elemento actual del array que se está procesando.</dd> - <dt><code>index</code></dt> - <dd>El índice del elemento actual dentro del array.</dd> - <dt><code>array</code></dt> - <dd>El array sobre el que se llama <code>map.</code></dd> - </dl> - </dd> - <dt><code>thisArg</code></dt> - <dd>Opcional. Valor a usar como <code>this </code>al ejecutar <code>callback</code>.</dd> -</dl> - -<h2 id="Description" name="Description">Descripción</h2> - -<p><code>map</code> llama a la función <code>callback</code> provista <strong>una vez por elemento</strong> de un array, en orden, y construye un nuevo array con los resultados. <code>callback</code> se invoca sólo para los índices del array que tienen valores asignados; no se invoca en los índices que han sido borrados o a los que no se ha asignado valor.</p> - -<p><code>callback</code> es llamada con tres argumentos: el valor del elemento, el índice del elemento, y el objeto array que se está recorriendo.</p> - -<p>Si se indica un parámetro <code>thisArg</code> a un <code>map</code>, se usará como valor de <code>this</code> en la función <code>callback</code>. En otro caso, se pasará {{jsxref("Global_Objects/undefined", "undefined")}} como su valor <code>this</code>. El valor de <code>this</code> observable por el <code>callback</code> se determina de acuerdo a las <a href="/en-US/docs/Web/JavaScript/Reference/Operators/this">reglas habituales para determinar el valor this visto por una función.</a></p> - -<p><code>map</code> no modifica el array original en el que es llamado (aunque <code>callback</code>, si es llamada, puede modificarlo).</p> - -<p>El rango de elementos procesado por <code>map</code> es establecido antes de la primera invocación del <code>callback</code>. Los elementos que sean agregados al array después de que la llamada a <code>map </code>comience no serán visitados por el <code>callback</code>. Si los elementos existentes del array son modificados o eliminados, su valor pasado al <code>callback</code> será el valor en el momento que el <code>map</code> lo visita; los elementos que son eliminados no son visitados.</p> - -<h2 id="Examples" name="Examples">Ejemplos</h2> - -<h3 id="Example_Mapping_an_array_of_numbers_to_an_array_of_square_roots" name="Example:_Mapping_an_array_of_numbers_to_an_array_of_square_roots">Procesar un array de números aplicándoles la raíz cuadrada</h3> - -<p>El siguiente código itera sobre un array de números, aplicándoles la raíz cuadrada a cada uno de sus elementos, produciendo un nuevo array a partir del inicial.</p> - -<pre class="brush: js">var numeros= [1, 4, 9]; -var raices = numeros.map(Math.sqrt); -// raices tiene [1, 2, 3] -// numeros aún mantiene [1, 4, 9] -</pre> - -<h3 id="Example_Mapping_an_array_of_numbers_to_an_array_of_square_roots" name="Example:_Mapping_an_array_of_numbers_to_an_array_of_square_roots">Usando map para dar un nuevo formato a los objetos de un array</h3> - -<p>El siguiente código toma un array de objetos y crea un nuevo array que contiene los nuevos objetos formateados.</p> - -<pre class="brush: js">var kvArray = [{clave:1, valor:10}, - {clave:2, valor:20}, - {clave:3, valor: 30}]; - -var reformattedArray = kvArray.map(function(obj){ - var rObj = {}; - rObj[obj.clave] = obj.valor; - return rObj; -}); - -// reformattedArray es ahora [{1:10}, {2:20}, {3:30}], - -// kvArray sigue siendo: -// [{clave:1, valor:10}, -// {clave:2, valor:20}, -// {clave:3, valor: 30}] -</pre> - -<h3 id="Example_Mapping_an_array_of_numbers_using_a_function_containing_an_argument" name="Example:_Mapping_an_array_of_numbers_using_a_function_containing_an_argument">Mapear un array de números usando una función con un argumento</h3> - -<p>El siguiente código muestra cómo trabaja <code>map </code>cuando se utiliza una función que requiere de un argumento. El argumento será asignado automáticamente a cada elemento del arreglo conforme <code>map </code>itera el arreglo original.</p> - -<pre class="brush: js">var numeros = [1, 4, 9]; -var dobles = numeros.map(function(num) { - return num * 2; -}); - -// dobles es ahora [2, 8, 18] -// numeros sigue siendo [1, 4, 9] -</pre> - -<h3 id="Example_using_map_generically" name="Example:_using_map_generically">Usando <code>map</code> de forma genérica</h3> - -<p>Este ejemplo muestra como usar <code>map </code>en {{jsxref("Global_Objects/String", "String")}} para obtener un arreglo de bytes en codifcación ASCII representando el valor de los caracteres:</p> - -<pre class="brush: js">var map = Array.prototype.map; -var valores = map.call('Hello World', function(char) { return char.charCodeAt(0); }); -// valores ahora tiene [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100] -</pre> - -<h3 id="Example_using_map_generically_querySelectorAll" name="Example:_using_map_generically_querySelectorAll">Usando <code>map</code> genérico con <code>querySelectorAll</code></h3> - -<p>Este ejemplo muestra como iterar sobre una colección de objetos obtenidos por <code>querySelectorAll</code>. En este caso obtenemos todas las opciones seleccionadas en pantalla y se imprimen en la consola:</p> - -<pre class="brush: js">var elems = document.querySelectorAll('select option:checked'); -var values = [].map.call(elems, function(obj) { - return obj.value; -}); -</pre> - -<h3 id="Usando_map_para_invertir_una_cadena">Usando <code>map</code> para invertir una cadena</h3> - -<pre class="brush: js">var str = '12345'; -[].map.call(str, function(x) { - return x; -}).reverse().join(''); - -// Salida: '54321' -// Bonus: usa'===' para probar si la cadena original era un palindromo -</pre> - -<h3 id="Example_Tricky_use_case" name="Example:_Tricky_use_case">Caso de uso engañoso</h3> - -<p><a href="http://www.wirfs-brock.com/allen/posts/166">(inspirado por este artículo)</a></p> - -<p>Es común utilizar el callback con un argumento (el elemento siendo pasado). Ciertas funciones son también usadas comunmente con un argumento, aún cuando toman argumentos adicionales opcionales. Estos hábitos pueden llevar a comportamientos confusos.</p> - -<pre class="brush: js">// Considera: -['1', '2', '3'].map(parseInt); -// Mientras uno esperaría [1, 2, 3] -// en realidad se obtiene [1, NaN, NaN] - -// parseInt se usa comúnmente con un argumento, pero toma dos. -// El primero es una expresión y el segundo el radix. -// a la función callback, Array.prototype.map pasa 3 argumentos: -// el elemento, el índice y el array. -// El tercer argumento es ignorado por parseInt, pero no el segundo, -// de ahí la posible confusión. Véase el artículo del blog para más detalles - -function returnInt(element) { - return parseInt(element, 10); -} - -['1', '2', '3'].map(returnInt); // [1, 2, 3] -// El resultado es un arreglo de números (como se esperaba) - -// Un modo más simple de lograr lo de arriba, mientras de evita el "gotcha": -['1', '2', '3'].map(Number); // [1, 2, 3] -</pre> - -<h2 id="Polyfill" name="Polyfill">Polyfill</h2> - -<p><code>map</code> fue agregado al estandar ECMA-262 en la 5th edición; por lo tanto podría no estar presente en todas la implementaciones del estándar. Puedes sobrepasar esto insertando el siguiente código al comienzo de tus scripts, permitiendo el uso de <code>map</code> en implementaciones que no lo soportan de forma nativa. Este algoritmo es exactamente el mismo especificado en ECMA-262, 5th edición, asumiendo {{jsxref("Global_Objects/Object", "Object")}}, {{jsxref("Global_Objects/TypeError", "TypeError")}}, y {{jsxref("Global_Objects/Array", "Array")}} tienen sus valores originales y que el <code>callback.call</code> evalua el valor original de <code>{{jsxref("Function.prototype.call")}}</code>.</p> - -<pre class="brush: js">// Production steps of ECMA-262, Edition 5, 15.4.4.19 -// Reference: http://es5.github.io/#x15.4.4.19 -if (!Array.prototype.map) { - - Array.prototype.map = function(callback, thisArg) { - - var T, A, k; - - if (this == null) { - throw new TypeError(' this is null or not defined'); - } - - // 1. Let O be the result of calling ToObject passing the |this| - // value as the argument. - var O = Object(this); - - // 2. Let lenValue be the result of calling the Get internal - // method of O with the argument "length". - // 3. Let len be ToUint32(lenValue). - var len = O.length >>> 0; - - // 4. If IsCallable(callback) is false, throw a TypeError exception. - // See: http://es5.github.com/#x9.11 - if (typeof callback !== 'function') { - throw new TypeError(callback + ' is not a function'); - } - - // 5. If thisArg was supplied, let T be thisArg; else let T be undefined. - if (arguments.length > 1) { - T = thisArg; - } - - // 6. Let A be a new array created as if by the expression new Array(len) - // where Array is the standard built-in constructor with that name and - // len is the value of len. - A = new Array(len); - - // 7. Let k be 0 - k = 0; - - // 8. Repeat, while k < len - while (k < len) { - - var kValue, mappedValue; - - // a. Let Pk be ToString(k). - // This is implicit for LHS operands of the in operator - // b. Let kPresent be the result of calling the HasProperty internal - // method of O with argument Pk. - // This step can be combined with c - // c. If kPresent is true, then - if (k in O) { - - // i. Let kValue be the result of calling the Get internal - // method of O with argument Pk. - kValue = O[k]; - - // ii. Let mappedValue be the result of calling the Call internal - // method of callback with T as the this value and argument - // list containing kValue, k, and O. - mappedValue = callback.call(T, kValue, k, O); - - // iii. Call the DefineOwnProperty internal method of A with arguments - // Pk, Property Descriptor - // { Value: mappedValue, - // Writable: true, - // Enumerable: true, - // Configurable: true }, - // and false. - - // In browsers that support Object.defineProperty, use the following: - // Object.defineProperty(A, k, { - // value: mappedValue, - // writable: true, - // enumerable: true, - // configurable: true - // }); - - // For best browser support, use the following: - A[k] = mappedValue; - } - // d. Increase k by 1. - k++; - } - - // 9. return A - return A; - }; -} -</pre> - -<h2 id="Specifications" name="Specifications">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.4.19', 'Array.prototype.map')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td>Definición inicial. Implementado en JavaScript 1.6.</td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.map', 'Array.prototype.map')}}</td> - <td>{{Spec2('ES6')}}</td> - <td></td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.map', 'Array.prototype.map')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td></td> - </tr> - </tbody> -</table> - -<h2 id="Browser_compatibility" name="Browser_compatibility">Compatibilidad con navegadores</h2> - -<div>{{CompatibilityTable}}</div> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>Característica</th> - <th>Chrome</th> - <th>Edge</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari</th> - </tr> - <tr> - <td>Soporte básico</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatGeckoDesktop("1.8")}}</td> - <td>{{CompatIE("9")}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>Característica</th> - <th>Android</th> - <th>Chrome para Android</th> - <th>Edge</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Soporte básico</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatGeckoMobile("1.8")}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - </tr> - </tbody> -</table> -</div> - -<h2 id="See_also" name="See_also">Véase también</h2> - -<ul> - <li>{{jsxref("Array.prototype.forEach()")}}</li> - <li>{{jsxref("Map")}} object</li> - <li>{{jsxref("Array.from()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/of/index.html b/files/es/web/javascript/referencia/objetos_globales/array/of/index.html deleted file mode 100644 index f57c7e2bc1..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/of/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Array.of() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/of -tags: - - Array - - ECMAScript 2015 - - JavaScript - - metodo - - polyfill -translation_of: Web/JavaScript/Reference/Global_Objects/Array/of ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>Array.of()</strong></code> crea una nueva instancia <code>Array</code> con un número variable de elementos pasados como argumento, independientemente del número o del tipo.</p> - -<p>La diferencia entre <code><strong>Array.of()</strong></code> y el constructor <code><strong>Array</strong></code> reside en como maneja los parámetros de tipo entero: <code><strong>Array.of(7)</strong></code> crea un array con un solo elemento, <code>7</code>, mientras que <code><strong>Array(7)</strong></code> crea un array vacío con una propiedad <code>length</code> de 7 (<strong>Nota:</strong> esto implica un array de 7 ranuras vacías, no ranuras con valores <code>undefined</code>).</p> - -<pre class="brush: js">Array.of(7); // [7] -Array.of(1, 2, 3); // [1, 2, 3] - -Array(7); // [ , , , , , , ] -Array(1, 2, 3); // [1, 2, 3]</pre> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox">Array.of(<var>elemento0</var>[, <var>elemento1</var>[, ...[, <var>elementoN</var>]]])</pre> - -<h3 id="Parámetros">Parámetros</h3> - -<dl> - <dt><code>elemento<em>N</em></code></dt> - <dd>Valores con los que se creará el Array en su respectivo indice.</dd> - <dt> - <h3 id="Valor_de_retorno">Valor de retorno</h3> - </dt> - <dd>Una nueva instancia de {{jsxref("Array")}}.</dd> -</dl> - -<h2 id="Descripción">Descripción</h2> - -<p>Esta función es parte del estándar ECMAScript 2015. Para obtener más información, consulte <a href="https://gist.github.com/rwaldron/1074126"><code>Array.of</code> y <code>Array.from</code> proposal</a> y <a href="https://gist.github.com/rwaldron/3186576"><code>Array.of</code> polyfill</a>.</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<pre class="brush: js">Array.of(1); // [1] -Array.of(1, 2, 3); // [1, 2, 3] -Array.of(undefined); // [undefined] -</pre> - -<h2 id="Polyfill">Polyfill</h2> - -<p>Escribiendo el siguiente código antes que cualquier otro, podemos emular la funcionalidad de <code>Array.of()</code> si es que ésta no está disponible de forma nativa.</p> - -<pre class="brush: js">if (!Array.of) { - Array.of = function() { - return Array.prototype.slice.call(arguments); - }; -} -</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES2015', '#sec-array.of', 'Array.of')}}</td> - <td>{{Spec2('ES2015')}}</td> - <td>Definición inicial.</td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.of', 'Array.of')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Array.of")}}</p> -</div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array")}}</li> - <li>{{jsxref("Array.from()")}}</li> - <li>{{jsxref("TypedArray.of()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/pop/index.html b/files/es/web/javascript/referencia/objetos_globales/array/pop/index.html deleted file mode 100644 index acc6d06885..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/pop/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Array.prototype.pop() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/pop -tags: - - Array - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/pop ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>pop()</strong></code> elimina el <strong>último</strong> elemento de un array y lo devuelve. Este método cambia la longitud del array.</p> - -<div>{{EmbedInteractiveExample("pages/js/array-pop.html")}}</div> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>arr</var>.pop()</pre> - -<h3 id="Valor_devuelto">Valor devuelto</h3> - -<p>El elemento que ha sido eliminado del array; {{jsxref("undefined")}} si el array está vacío.</p> - -<h2 id="Descripción">Descripción</h2> - -<p>El método <code>pop</code> elimina el último elemento de un array y devuelve su valor al método que lo llamó.</p> - -<p><code>pop</code> es intencionadamente genérico; este método puede ser {{jsxref("Function.call", "called", "", 1)}} o {{jsxref("Function.apply", "applied", "", 1)}} en objectos similares a un array. En objetos que no contengan una propiedad <code>length</code>, que refleje su forma en una serie de propiedades numéricas consecutivas en base cero, puede no comportarse de manera significativa.</p> - -<p>Si se llama a <code>pop()</code> en un array vacío, devuelve {{jsxref("undefined")}}.</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Eliminando_el_último_elemento_de_un_array">Eliminando el último elemento de un array</h3> - -<p>El siguiente código crea el array <code>myFish</code>, que contiene cuatro elementos, a continuación, elimina su último elemento.</p> - -<pre class="brush: js">var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; - -var popped = myFish.pop(); - -console.log(myFish); // ['angel', 'clown', 'mandarin' ] - -console.log(popped); // 'sturgeon'</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES3')}}</td> - <td>Estándar</td> - <td>Definición inicial. Implementada en JavaScript 1.2.</td> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.4.6', 'Array.prototype.pop')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.pop', 'Array.prototype.pop')}}</td> - <td>{{Spec2('ES6')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.pop', 'Array.prototype.pop')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div> -<p>{{Compat("javascript.builtins.Array.pop")}}</p> -</div> - -<h2 id="Vea_también">Vea también</h2> - -<ul> - <li>{{jsxref("Array.prototype.push()")}}</li> - <li>{{jsxref("Array.prototype.shift()")}}</li> - <li>{{jsxref("Array.prototype.unshift()")}}</li> - <li>{{jsxref("Array.prototype.concat()")}}</li> - <li>{{jsxref("Array.prototype.splice()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/prototype/index.html b/files/es/web/javascript/referencia/objetos_globales/array/prototype/index.html deleted file mode 100644 index 2098f514ad..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/prototype/index.html +++ /dev/null @@ -1,188 +0,0 @@ ---- -title: Array.prototype -slug: Web/JavaScript/Referencia/Objetos_globales/Array/prototype -tags: - - Array - - Arreglo - - JavaScript - - Property - - Propiedad -translation_of: Web/JavaScript/Reference/Global_Objects/Array/prototype ---- -<div>{{JSRef}}</div> - -<p>La propiedad <strong><code>Array.prototype</code></strong> representa el prototipo del constructor {{jsxref("Array")}} y le permite agregar nuevas propiedades y métodos a todos los objetos Array.</p> - -<pre class="brush: js">// Si JavaScript no proporciona un método first() de forma nativa, -// agrega un nuevo método que devuelve el primer elemento de una matriz. - -if (!Array.prototype.first) { - Array.prototype.first = function() { - return this[0]; - } -} -</pre> - -<h2 id="Description" name="Description">Descripción</h2> - -<p>Las instancias {{jsxref("Array")}} heredan de <code>Array.prototype</code>. Al igual que con todos los constructores, puede cambiar el prototipo del constructor del objeto para realizar cambios en todas las instancias {{jsxref("Array")}} . Por ejemplo, puede agregar nuevos métodos y propiedades para extender todos los objetos <code>Array</code>. Esto se usa para {{Glossary("Polyfill", "polyfilling")}}, por ejemplo.</p> - -<p>Un hecho poco conocido: <code>Array.prototype</code> en sí es un {{jsxref("Array")}}:</p> - -<pre class="brush: js">Array.isArray(Array.prototype); // true</pre> - -<p>{{js_property_attributes(0, 0, 0)}}</p> - -<h2 id="Properties" name="Properties">Propiedades</h2> - -<dl> - <dt><code>Array.prototype.constructor</code></dt> - <dd>Especifica la función que crea el prototipo de un objeto.</dd> - <dt>{{jsxref("Array.prototype.length")}}</dt> - <dd>Refleja el número de elementos en un array.</dd> - <dt>{{jsxref("Array.@@unscopables", "Array.prototype[@@unscopables]")}}</dt> - <dd>Un símbolo que contiene nombres de propiedades para excluir de un ámbito vinculante <code><a href="/es/docs/Web/JavaScript/Reference/Statements/with">with</a></code>.</dd> -</dl> - -<h2 id="Methods" name="Methods">Métodos</h2> - -<h3 id="Mutator_methods" name="Mutator_methods">Métodos de mutación</h3> - -<p>Estos métodos modifican el array:</p> - -<dl> - <dt>{{jsxref("Array.prototype.copyWithin()")}}</dt> - <dd>Copia una secuencia de elementos dentro del array.</dd> - <dt>{{jsxref("Array.prototype.fill()")}}</dt> - <dd>Rellena todos los elementos de un array desde un índice de inicio hasta un índice de fin con un valor determinado.</dd> - <dt>{{jsxref("Array.prototype.pop()")}}</dt> - <dd>Elimina el último elemento de un array y devuelve dicho elemento.</dd> - <dt>{{jsxref("Array.prototype.push()")}}</dt> - <dd>Añade uno o más elementos al final de un array y devuelve la nueva longitud del array.</dd> - <dt>{{jsxref("Array.prototype.reverse()")}}</dt> - <dd>Invierte el orden de los elementos de un array — el primero será el último y el último será el primero.</dd> - <dt>{{jsxref("Array.prototype.shift()")}}</dt> - <dd>Elimina el primer elemento de un array y devuelve dicho elemento.</dd> - <dt>{{jsxref("Array.prototype.sort()")}}</dt> - <dd>Ordena los elementos de un array y devuelve el array.</dd> - <dt>{{jsxref("Array.prototype.splice()")}}</dt> - <dd>Añade o elimina elementos de un array.</dd> - <dt>{{jsxref("Array.prototype.unshift()")}}</dt> - <dd>Añade uno o más elementos al principio del array y devuelve la nueva longitud del array.</dd> -</dl> - -<h3 id="Accessor_methods" name="Accessor_methods">Métodos de consulta</h3> - -<p>Estos métodos no modifican el array y devuelven alguna representación del array.</p> - -<dl> - <dt>{{jsxref("Array.prototype.concat()")}}</dt> - <dd>Devuelve un nuevo array compuesto por este array unido con otro(s) array(s) y/o valor(es).</dd> - <dt>{{jsxref("Array.prototype.includes()")}}</dt> - <dd>Determina si un array contiene cierto elemento, devolviendo <code>true</code> o <code>false</code> apropiadamente.</dd> - <dt>{{jsxref("Array.prototype.indexOf()")}}</dt> - <dd>Devuelve el primer (menor) índice de un elemento dentro del array que sea igual al valor especificado, o -1 si no contiene dicho valor.</dd> - <dt>{{jsxref("Array.prototype.join()")}}</dt> - <dd>Une todos los elementos de un array en una cadena de texto.</dd> - <dt>{{jsxref("Array.prototype.lastIndexOf()")}}</dt> - <dd>Devuelve el último (mayor) índice de un elemento dentro del array que sea igual al valor especificado, o -1 si no contiene dicho valor.</dd> - <dt>{{jsxref("Array.prototype.slice()")}}</dt> - <dd>Extrae una sección de un array y devuelve un nuevo array.</dd> - <dt>{{jsxref("Array.prototype.toSource()")}} {{non-standard_inline}}</dt> - <dd>Devuelve el array literal que representa al propio array especificado; puedes usar este valor para crear un nuevo array. Reemplaza al método {{jsxref("Object.prototype.toSource()")}}.</dd> - <dt>{{jsxref("Array.prototype.toString()")}}</dt> - <dd>Devuelve una cadena de texto que representa el array y sus elementos. Reemplaza el método {{jsxref("Object.prototype.toString()")}}.</dd> - <dt>{{jsxref("Array.prototype.toLocaleString()")}}</dt> - <dd>Devuelve una cadena de texto localizada que representa el array y sus elementos. Reemplaza el método {{jsxref("Object.prototype.toLocaleString()")}}.</dd> -</dl> - -<h3 id="Iteration_methods" name="Iteration_methods">Métodos de iteración</h3> - -<p>Muchos métodos toman como argumentos funciones que son llamadas mientras se procesa el array. Cuando estos métodos son llamados, la longitud (<code style="font-style: normal;">length</code>) del array es muestreado, y cualquier elemento añadido por encima de esta longitud dentro de la función (<span style="font-family: consolas,monaco,andale mono,monospace;">callback</span>) no es visitado. Otros cambios sobre el array (establecer el valor o eliminar un elemento) podría afectar el resultado de la operación si el método visita el elemento después. Mientras que el comportamiento especifico de estos métodos en muchos casos es bien definido, no deberías delegar sobre eso con la finalidad de no confundir a otros que podrían leer tu código. Si debes modificar el array, copialo en un nuevo array en su lugar.</p> - -<dl> - <dt>{{jsxref("Array.prototype.entries()")}}</dt> - <dd>Devuelve un nuevo objeto <code>Array Iterator</code> que contiene los pares clave/valor para cada índice en el array.</dd> - <dt>{{jsxref("Array.prototype.every()")}}</dt> - <dd>Devuelve true si cada elemento en este array satisface la función de testeo proporcionada.</dd> - <dt>{{jsxref("Array.prototype.filter()")}}</dt> - <dd>Crea un nuevo array con todos los elementos de este array para los cuales la función de filtrado proporcionada devuelve true.</dd> - <dt>{{jsxref("Array.prototype.find()")}}</dt> - <dd>Devuelve el elemento hallado en el array si un elemento en el array satisface la función de testeo proporcionada, o <code>undefined</code> si no se halla ninguno.</dd> - <dt>{{jsxref("Array.prototype.findIndex()")}}</dt> - <dd>Devuelve el índice hallado en el array si un elemento en el array satisface la función de testeo proporcionada, o -1 si no se halla ninguno.</dd> -</dl> - -<dl> - <dt>{{jsxref("Array.prototype.forEach()")}}</dt> - <dd>Llama a una función para cada elemento del array.</dd> - <dt>{{jsxref("Array.prototype.keys()")}}</dt> - <dd>Devuelve un nuevo <code>Array Iterator</code> que contiene las claves para cada índice en el array.</dd> - <dt>{{jsxref("Array.prototype.map()")}}</dt> - <dd>Crea un nuevo array con el resultado de llamar a la función proporcionada sobre cada elemento de este array.</dd> - <dt>{{jsxref("Array.prototype.reduce()")}}</dt> - <dd>Aplica una función que recibe un acumulador y cada valor del array (de izquierda a derecha) para reducirlo a un único valor.</dd> - <dt>{{jsxref("Array.prototype.reduceRight()")}}</dt> - <dd>Aplica una función que recibe un acumulador y cada valor del array (de derecha a izquierda) para reducirlo a un único valor.</dd> - <dt>{{jsxref("Array.prototype.some()")}}</dt> - <dd>Devuelve true si al menos un elemento en este array satisface la función de testeo proporcionada.</dd> - <dt>{{jsxref("Array.prototype.values()")}}</dt> - <dd>Devuelve un nuevo objeto <code>Array Iterator</code> que contiene los valores para cada índice en el array.</dd> - <dt>{{jsxref("Array.prototype.@@iterator()", "Array.prototype[@@iterator]()")}}</dt> - <dd>Devuelve un nuevo objeto <code>Array Iterator</code> que contiene los valores para cada índice en el array.</dd> -</dl> - -<h3 id="Generic_methods" name="Generic_methods">Métodos genéricos (no estándar)</h3> - -<p>Muchos métodos en el objeto Javascript Array son diseñados para ser generalmente llamados para todos los objetos que "parecen" Arrays. Es decir, pueden ser usados sobre cualquier objeto que tenga una propiedad longitud (<code style="font-style: normal;">length</code>), y puedan ser accedidos usando nombres de propiedades numéricos (como con la indexación <code><span style="font-family: consolas,monaco,andale mono,monospace;">array[5]</span></code>). Algunos métodos, tales como {{jsxref("Array.join", "join")}}, sólo leen la <code>longitud</code> y propiedades numéricas del objeto sobre el cual son llamados. Otros, como {{jsxref("Array.reverse", "reverse")}}, requieren que las propiedades numéricas del objeto y la <code>longitud</code> sean mutables; estos métodos, por tanto, no pueden ser llamados sobre objetos como {{jsxref("String")}}, los cuales no permiten que su longitud o propiedades numéricas sintetizadas sean establecidas.</p> - -<h2 id="Specifications" name="Specifications">Especificaciones</h2> - -<p> </p> - -<table> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES1')}}</td> - <td>{{Spec2('ES1')}}</td> - <td>Definición inicial.</td> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.3.1', 'Array.prototype')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype', 'Array.prototype')}}</td> - <td>{{Spec2('ES6')}}</td> - <td> - <p>Se agregaron los métodos <code>copyWithin()</code>, <code>fill()</code>, <code>entries()</code>, <code>keys()</code>, <code>values()</code>, <code>find()</code>, <code>findIndex()</code>.</p> - </td> - </tr> - <tr> - <td>{{SpecName('ES7', '#sec-array.prototype', 'Array.prototype')}}</td> - <td>{{Spec2('ES7')}}</td> - <td>Se agregó el método <code>includes()</code>.</td> - </tr> - </tbody> -</table> - -<p> </p> - -<h2 id="Browser_compatibility" name="Browser_compatibility">Compatibilidad con navegadores</h2> - -<div>{{Compat("javascript.builtins.Array.prototype")}}</div> - -<div id="compat-mobile"> </div> - -<h2 id="See_also" name="See_also">Ver también</h2> - -<ul> - <li>{{jsxref("Array")}}</li> - <li>{{jsxref("Function.prototype")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/push/index.html b/files/es/web/javascript/referencia/objetos_globales/array/push/index.html deleted file mode 100644 index fc00ce7e7a..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/push/index.html +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: Array.prototype.push() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/push -tags: - - Array - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/push ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>push()</strong></code> añade uno o más elementos al final de un array y devuelve la nueva longitud del array.</p> - -<div>{{EmbedInteractiveExample("pages/js/array-push.html")}}</div> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>arr</var>.push(<var>element1</var>[, ...[, <var>elementN</var>]])</pre> - -<h3 id="Parámetros" name="Parámetros">Parámetros</h3> - -<dl> - <dt><code>element<em>N</em></code></dt> - <dd>Los elementos a añadir al final del array.</dd> -</dl> - -<h3 id="Valor_devuelto">Valor devuelto</h3> - -<p>La nueva propiedad {{jsxref("Array.length", "length")}} del objeto sobre el cual se efectuó la llamada.</p> - -<h2 id="Description" name="Description">Descripción</h2> - -<p>El método <code>push</code> es muy práctico para añadir valores a un array.</p> - -<p><code>push</code> es genérico intencionadamente. Este método puede ser {{jsxref("Function.call", "call()")}} o {{jsxref("Function.apply", "apply()")}} a objetos que representen arrays. El método <code>push</code> depende de la propiedad <code>length</code> para decidir donde empezar a insertar los valores dados. Si el valor de la propiedad <code>length</code> no puede ser convertido en numérico, el índice 0 es usado. Esto permite la posibilidad de que la propiedad <code>length</code> sea inexistente, y en este caso <code>length</code> será creado.</p> - -<p>Los únicos objetos nativos que se asemejen al array son {{jsxref("Global_Objects/String", "strings", "", 1)}} objetos, aunque estos no se puedan usar en la aplicación de este método ya que son inmutables.</p> - -<h2 id="Examples" name="Examples">Ejemplos</h2> - -<h3 id="Ejemplo: Añadiendo elementos a un array" name="Ejemplo: Añadiendo elementos a un array">Ejemplo: Añadiendo elementos a un array</h3> - -<p>El siguiente código crea el array <code>sports</code> que contiene dos elementos, luego añade 2 elementos más. Tras ejecutar el código, <code>sports</code> contiene 4 elementos: "soccer", "baseball", "football" and "swimming".</p> - -<pre class="brush: js">var sports = ['soccer', 'baseball']; -var total = sports.push('football', 'swimming'); - -console.log(sports); // ['soccer', 'baseball', 'football', 'swimming'] -console.log(total); // 4 -</pre> - -<h3 id="Uniendo_dos_arrays">Uniendo dos arrays</h3> - -<p>This example uses {{jsxref("Function.apply", "apply()")}} to push all elements from a second array.</p> - -<p>Do <em>not</em> use this method if the second array (<code>moreVegs</code> in the example) is very large, because the maximum number of parameters that one function can take is limited in practice. See {{jsxref("Function.apply", "apply()")}} for more details.</p> - -<pre class="brush: js">var vegetables = ['parsnip', 'potato']; -var moreVegs = ['celery', 'beetroot']; - -// Merge the second array into the first one -// Equivalent to vegetables.push('celery', 'beetroot'); -Array.prototype.push.apply(vegetables, moreVegs); - -console.log(vegetables); // ['parsnip', 'potato', 'celery', 'beetroot'] -</pre> - -<h3 id="Using_an_object_in_an_array-like_fashion">Using an object in an array-like fashion</h3> - -<p>Como se menciona anteriormente, <code>push</code> es intencionadamente genérico, y podemos usar eso a nuestro favor. <code>Array.prototype.push</code> puede funcionar bien con un objeto, como muestra este ejemplo. Ten en cuenta que no se crea un array para almacenar una colección de objetos. En su lugar, almacenamos la colección en el propio objeto y se utiliza el método <code>call</code> sobre <code>Array.prototype.push</code> para hacer creer al método que estamos tratando a un array, y simplemente funciona, gracias a la forma en que JavaScript nos permite establecer el contexto de la ejecución.</p> - -<pre class="brush: js">var obj = { - length: 0, - - addElem: function addElem(elem) { - // obj.length is automatically incremented - // every time an element is added. - [].push.call(this, elem); - } -}; - -// Let's add some empty objects just to illustrate. -obj.addElem({}); -obj.addElem({}); -console.log(obj.length); -// → 2 -</pre> - -<p>Tenga en cuenta que aunque <code>obj</code> no es un array, el método <code>push</code> ha incrementado satisfactoriamente la propiedad <code>length</code> de <code>obj</code> tal y como si se tratara de un array.</p> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES3')}}</td> - <td>{{Spec2('ES3')}}</td> - <td>Definición inicial. Implementado en JavaScript 1.2.</td> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.4.7', 'Array.prototype.push')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.push', 'Array.prototype.push')}}</td> - <td>{{Spec2('ES6')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.push', 'Array.prototype.push')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_en_navegadores">Compatibilidad en navegadores</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Array.push")}}</p> -</div> - -<h2 id="Ver también" name="Ver también">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.pop()")}}</li> - <li>{{jsxref("Array.prototype.shift()")}}</li> - <li>{{jsxref("Array.prototype.unshift()")}}</li> - <li>{{jsxref("Array.prototype.concat()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/reduce/index.html b/files/es/web/javascript/referencia/objetos_globales/array/reduce/index.html deleted file mode 100644 index 68d7a9cb2f..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/reduce/index.html +++ /dev/null @@ -1,215 +0,0 @@ ---- -title: Array.prototype.reduce() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/reduce -tags: - - Array - - ECMAScript 5 - - JavaScript - - Prototype - - Reduce - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/Reduce ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>reduce()</strong></code> ejecuta una función <strong>reductora</strong> sobre cada elemento de un array, devolviendo como resultado un único valor.</p> - -<div>{{EmbedInteractiveExample("pages/js/array-reduce.html")}}</div> - -<p>La función <strong>reductora</strong> recibe cuatro argumentos:</p> - -<ol> - <li>Acumulador (<code><em>acc</em></code>)</li> - <li>Valor Actual (<code><em>cur</em></code>)</li> - <li>Índice Actual (<em><code>idx</code></em>)</li> - <li>Array (<em><code>src</code></em>)</li> -</ol> - -<p>El valor devuelto de la función <strong>reductora</strong> se asigna al acumulador, cuyo valor se recuerda en cada iteración de la matriz y, en última instancia, se convierte en el valor final, único y resultante.</p> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>arr.reduce(callback(acumulador, valorActual[, índice[, array]])[, valorInicial])</var></pre> - -<h3 id="Parámetros" name="Parámetros">Parámetros</h3> - -<dl> - <dt><code>callback</code></dt> - <dd>Función a ejecutar sobre cada elemento del array (excepto para el primero, si no se proporciona <code>valorInicial</code>), que recibe cuatro parámetros: - <dl> - <dt><code>acumulador</code></dt> - <dd>El acumulador acumula el valor devuelto por la función callback. Es el valor acumulado devuelto en la última invocación de callback, o el <code>valorInicial</code>, si se proveyó. (Ver a continuación).</dd> - <dt><code>valorActual</code></dt> - <dd>El elemento actual que está siendo procesado en el array.</dd> - <dt><code>índice</code> {{optional_inline}}</dt> - <dd>El índice del elemento actual que está siendo procesado en el array. Empieza desde el índice 0 si se provee <code>valorInicial</code>. En caso contrario, comienza desde el índice 1.</dd> - <dt><code>array</code> {{optional_inline}}</dt> - <dd>El array sobre el cual se llamó el método <code>reduce()</code>.</dd> - </dl> - </dd> - <dt><code>valorInicial</code> {{optional_inline}}</dt> - <dd>Un valor a usar como primer argumento en la primera llamada de la función <em><code>callback</code></em>. Si no se proporciona el <em><code>valorInicial</code></em>, el primer elemento del array será utilizado y saltado. Llamando a <code>reduce()</code> sobre un array vacío sin un <em><code>valorInicial</code></em> lanzará un {{jsxref("TypeError")}}.</dd> -</dl> - -<h2 id="Descripción" name="Descripción">Descripción</h2> - -<p>El método <code>reduce()</code> ejecuta <code>callback</code> una vez por cada elemento presente en el array, excluyendo los huecos del mismo, recibe cuatro argumentos:</p> - -<ul> - <li><code>valorAnterior</code></li> - <li><code>valorActual</code></li> - <li><code>indiceActual</code></li> - <li><code>array</code></li> -</ul> - -<p>La primera vez que se llama la función, <code>valorAnterior</code> y <code>valorActual</code> pueden tener uno de dos valores. Si se proveyó un <code>valorInicial</code> al llamar a <code>reduce</code>, entonces <code>valorAnterior</code> será igual al <code>valorInicial</code> y <code>valorActual</code> será igual al primer elemento del array. Si no se proveyó un <code>valorInicial</code>, entonces <code>valorAnterior</code> será igual al primer valor en el <code>array</code> y <code>valorActual</code> será el segundo.</p> - -<p>Si el <code>array</code> está vacío y no se proveyó un <code>valorInicial</code> lanzará un {{jsxref("Global_Objects/TypeError", "TypeError")}}. Si el <code>array</code> tiene un sólo elemento (sin importar la posición) y no se proveyó un <code>valorInicial</code>, o si se proveyó un <code>valorInicial</code> pero el arreglo está vacío, se retornará ese único valor sin llamar a la <code>función</code>.</p> - -<p>Suponga que ocurre el siguiente uso de <code>reduce</code>:</p> - -<pre class="brush: js">[0,1,2,3,4].reduce(function(valorAnterior, valorActual, indice, vector){ - return valorAnterior + valorActual; -}); - -// Primera llamada -valorAnterior = 0, valorActual = 1, indice = 1 - -// Segunda llamada -valorAnterior = 1, valorActual = 2, indice = 2 - -// Tercera llamada -valorAnterior = 3, valorActual = 3, indice = 3 - -// Cuarta llamada -valorAnterior = 6, valorActual = 4, indice = 4 - -// el <code>array</code> sobre el que se llama a reduce siempre es el objeto [0,1,2,3,4] - -// Valor Devuelto: 10 -</pre> - -<p>Y si proporcionas un <code>valorInicial</code>, el resultado sería como este:</p> - -<pre class="brush: js">[0,1,2,3,4].reduce(function(valorAnterior, valorActual, indice, vector){ - return valorAnterior + valorActual; -}, 10); - -// Primera llamada -valorAnterior = 10, valorActual = 0, indice = 0 - -// Segunda llamada -valorAnterior = 10, valorActual = 1, indice = 1 - -// Tercera llamada -valorAnterior = 11, valorActual = 2, indice = 2 - -// Cuarta llamada -valorAnterior = 13, valorActual = 3, indice = 3 - -// Quinta llamada -valorAnterior = 16, valorActual = 4, indice = 4 - -// el <code>array</code> sobre el que se llama a reduce siempre es el objeto [0,1,2,3,4] - -// Valor Devuelto: 20 -</pre> - -<h2 id="Polyfill" name="Polyfill">Polyfill</h2> - -<div class="note"> -<p><strong>Polyfill</strong> se refiere a unas líneas de código o un plugin que permite "tener" (en realidad se simulan de alguna otra manera) las nuevas funcionalidades de HTML5 en aquellos navegadores que nativamente no lo soportan. Consigue que, en adelante, el código sea transparente para el programador, como si el navegador soportase la funcionalidad nativamente.</p> -</div> - -<p><code>reduce</code> es una extensión de JavaScript al estándar ECMA-262; como tal puede que no esté presente en otras implementaciones del estándar. Puedes trabajar con ésto insertando el siguiente código al comienzo de tus scripts, permitiendo el uso de <code>reduce</code> en implementaciones de ECMA-262 que no lo implementan de modo nativo. Este algoritmo es exactamente el mismo usando en Firefox y SpiderMonkey.</p> - -<pre class="brush: js">if (!Array.prototype.reduce) -{ - Array.prototype.reduce = function(fun /*, inicial*/) - { - var longitud = this.length; - if (typeof fun != "function") - throw new TypeError(); - - // no se devuelve ningún valor si no hay valor inicial y el array está vacío - if (longitud == 0 && arguments.length == 1) - throw new TypeError(); - - var indice = 0; - if (arguments.length >= 2) - { - var rv = arguments[1]; - } - else - { - do - { - if (indice in this) - { - rv = this[indice++]; - break; - } - - // si el array no contiene valores, no existe valor inicial a devolver - if (++indice >= longitud) - throw new TypeError(); - } - while (true); - } - - for (; indice < longitud; indice++) - { - if (indice in this) - rv = fun.call(null, rv, this[indice], indice, this); - } - - return rv; - }; -} -</pre> - -<h2 id="Ejemplos" name="Ejemplos">Ejemplos</h2> - -<h3 id="Ejemplo_Resumir_todos_los_valores_de_un_array" name="Ejemplo:_Resumir_todos_los_valores_de_un_array">Ejemplo: Sumar todos los valores de un <code>array</code></h3> - -<pre class="brush: js">var total = [0, 1, 2, 3].reduce(function(a, b){ return a + b; }); -// total == 6 -</pre> - -<h3 id="Ejemplo_Integrar_un_array_a_partir_de_varios_arrays" name="Ejemplo:_Integrar_un_array_a_partir_de_varios_arrays">Ejemplo: Integrar un <code>array</code> a partir de varios <code>arrays</code></h3> - -<pre class="brush: js">var integrado = [[0,1], [2,3], [4,5]].reduce(function(a,b) { - return a.concat(b); -}); -// integrado es [0, 1, 2, 3, 4, 5] -</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Especificación</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.reduce', 'Array.prototype.reduce()')}}</td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Array.reduce")}}</p> -</div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.reduceRight()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/reduceright/index.html b/files/es/web/javascript/referencia/objetos_globales/array/reduceright/index.html deleted file mode 100644 index cff59fddf4..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/reduceright/index.html +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: Array.prototype.reduceRight() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/reduceRight -tags: - - Array - - ECMAScript5 - - JavaScript - - JavaScript 1.8 - - Method - - Prototype -translation_of: Web/JavaScript/Reference/Global_Objects/Array/ReduceRight ---- -<div>{{JSRef("Objetos_globales", "Array")}}</div> - -<h2 id="Resumen" name="Resumen">Resumen</h2> - -<p>Aplica una función simultáneamente contra un acumulador y cada elemento de un array (de derecha a izquierda) para reducirlo a un único valor.</p> - -<h2 id="Sintaxis" name="Sintaxis">Sintaxis</h2> - -<pre class="eval"><i>array</i>.reduceRight( -<i>funcion</i>[, -<i>valorInicial</i>]) -</pre> - -<h3 id="Par.C3.A1metros" name="Par.C3.A1metros">Parámetros</h3> - -<dl> - <dt><code>callback</code></dt> - <dd>Función a ejecutar para cada valor del array.</dd> - <dt><code>initialValue</code></dt> - <dd>Objeto a usar como primer argumento en la primera llamada de la <code>funcion</code>.</dd> -</dl> - -<h3 id="Descripci.C3.B3n" name="Descripci.C3.B3n">Descripción</h3> - -<p><code>reduceRight</code> ejecuta la <code>funcion</code> una vez para cada elemento presente en el array, excluyendo los huecos del mismo, recibiendo cuatro argumentos: el valor inicial (o valor de la llamada previa de <code>funcion</code>), el valor del elemento actual, el índice actual y el array sobre el que ocurre la iteración.</p> - -<p>La llamada a la <code>funcion</code> de reduceRight sería similar a esto:</p> - -<pre class="brush: js">.reduceRight(function(valorPrevio, valorActual, indice, array){ - // ... -}) -</pre> - -<p>La primera vez que se llama a la función, el <code>valorPrevio</code> y el <code>valorActual</code> puede ser uno de los dos valores. Si se incluye un <code>valorInicial</code> en la llamada a <code>reduceRight</code>, entonces el <code>valorPrevio</code> será igual al <code>valorInicial</code> y el <code>valorActual</code> será igual al último valor del array. Si no se incluye ningún <code>valorInicial</code>, entonces el <code>valorPrevio</code> será igual al último valor del array y el <code>valorActual</code> será igual al penúltimo valor.</p> - -<p>Algún ejemplo de la ejecución de la función paso a paso sería similar a esto:</p> - -<pre class="brush: js">[0,1,2,3,4].reduceRight(function(valorPrevio, valorActual, indice, array){ - return valorPrevio + valorActual; -}); - -// First call -valorPrevio = 4, valorActual = 3, indice = 3 - -// Second call -valorPrevio = 7, valorActual = 2, indice = 2 - -// Third call -valorPrevio = 9, valorActual = 1, indice = 1 - -// Fourth call -valorPrevio = 10, valorActual = 0, indice = 0 - -// el array sobre el que se llama a reduceRight siempre es el objeto [0,1,2,3,4] - -// Valor Devuelto: 10 -</pre> - -<p>Y si proporcionas un <code>valorInicial</code>, el resultado sería como este:</p> - -<pre class="brush: js">[0,1,2,3,4].reduceRight(function(valorPrevio, valorActual, indice, array){ - return valorPrevio + currentValue; -}, 10); - -// Primera llamada -valorPrevio = 10, valorActual = 4, indice = 4 - -// Segunda llamada -valorPrevio = 14, valorActual = 3, indice = 3 - -// Tercera llamada -valorPrevio = 17, valorActual = 2, indice = 2 - -// Cuarta llamada -valorPrevio = 19, valorActual = 1, indice = 1 - -// Quinta llamada -valorPrevio = 20, valorActual = 0, indice = 0 - -// el array sobre el que se llama a reduce siempre es el objeto [0,1,2,3,4] - -// Valor Devuelto: 20 -</pre> - -<h2 id="Compatibilidad" name="Compatibilidad">Compatibilidad</h2> - -<p><code>reduceRight</code> es una extensión de JavaScript al estándar ECMA-262; como tal puede que no esté presente en otras implementaciones del estándar. Puedes trabajar con ésto insertando el siguiente código al comienzo de tus scripts, permitiendo el uso de <code>reduceRight</code> en implementaciones de ECMA-262 que no lo implementan de modo nativo. Este algoritmo es exactamente el mismo usando en Firefox y SpiderMonkey.</p> - -<pre class="brush: js">if (!Array.prototype.reduceRight) -{ - Array.prototype.reduceRight = function(fun /*, inicial*/) - { - var longitud = this.length; - if (typeof fun != "function") - throw new TypeError(); - - // no se devuelve ningún valor si no hay valor inicial y el array está vacío - if (longitud == 0 && arguments.length == 1) - throw new TypeError(); - - var indice = longitud - 1; - if (arguments.length >= 2) - { - var rv = arguments[1]; - } - else - { - do - { - if (indice in this) - { - rv = this[indice--]; - break; - } - - // si el array no contiene valores, no existe valor incial a devolver - if (--indice < 0) - throw new TypeError(); - } - while (true); - } - - for (; indice >= 0; indice--) - { - if (indice in this) - rv = fun.call(null, rv, this[indice], indice, this); - } - - return rv; - }; -} -</pre> - -<h2 id="Ejemplos" name="Ejemplos">Ejemplos</h2> - -<h3 id="Ejemplos:_Resumir_todos_los_valores_de_un_array" name="Ejemplos:_Resumir_todos_los_valores_de_un_array">Ejemplos: Resumir todos los valores de un array</h3> - -<pre class="brush: js">var total = [0, 1, 2, 3].reduceRight(function(a, b) { return a + b; }); -// total == 6 -</pre> - -<h3 id="Ejemplo:_Integrar_un_array_a_partir_de_varios_arrays" name="Ejemplo:_Integrar_un_array_a_partir_de_varios_arrays">Ejemplo: Integrar un array a partir de varios arrays</h3> - -<pre class="brush: js">var integrado = [[0, 1], [2, 3], [4, 5]].reduceRight(function(a, b) { - return a.concat(b); -}, []); -// integrado es [4, 5, 2, 3, 0, 1] -</pre> - -<h2 id="V.C3.A9ase_tambi.C3.A9n" name="V.C3.A9ase_tambi.C3.A9n">Véase también</h2> - -<ul> - <li>{{jsxref("Array.prototype.reduce()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/reverse/index.html b/files/es/web/javascript/referencia/objetos_globales/array/reverse/index.html deleted file mode 100644 index 7399f8dcda..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/reverse/index.html +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Array.prototype.reverse() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/reverse -tags: - - Array - - JavaScript - - Prototipo - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/reverse ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>reverse()</strong></code> invierte el orden de los elementos de un array <em><a href="https://en.wikipedia.org/wiki/In-place_algorithm">in place</a></em>. El primer elemento pasa a ser el último y el último pasa a ser el primero.</p> - -<p>{{EmbedInteractiveExample("pages/js/array-reverse.html")}}</p> - -<h2 id="Sintaxis" name="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>a</var>.reverse()</pre> - -<h3 id="Valor devuelto" name="Valor devuelto">Valor devuelto</h3> - -<p>El array invertido.</p> - -<h2 id="Descripción" name="Descripción">Descripción</h2> - -<p>El método <code>reverse</code> cruza los elementos del objeto matriz invocados en su lugar, mutando la matriz, y retornando una referencia a la misma.</p> - -<h2 id="Ejemplos" name="Ejemplos">Ejemplos</h2> - -<h3 id="Ejemplo:Colocar al revés los elementos de un array" name="Ejemplo:Colocar al revés los elementos de un array">Colocar al revés los elementos de un array</h3> - -<p>El siguiente ejemplo crea un array <code>a</code> que contiene tres elementos y luego lo invierte.<br> - La llamada a <code>reverse()</code> devuelve una referencia al array <code>a</code> invertido.</p> - -<pre class="brush: js">const a = [1, 2, 3]; - -console.log(a); // [1, 2, 3] - -a.reverse(); - -console.log(a); // [3, 2, 1] - -</pre> - -<h2 id="Specifications" name="Specifications">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES1')}}</td> - <td>{{Spec2('ES1')}}</td> - <td>Definición inicial. Implementado en JavaScript 1.1.</td> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.4.8', 'Array.prototype.reverse')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.reverse', 'Array.prototype.reverse')}}</td> - <td>{{Spec2('ES6')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.reverse', 'Array.prototype.reverse')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad en navegadores" name="Compatibilidad en navegadores">Compatibilidad en navegadores</h2> - -<p>{{Compat("javascript.builtins.Array.reverse")}}</p> - -<h2 id="Ver también" name="Ver también">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.join()")}}</li> - <li>{{jsxref("Array.prototype.sort()")}}</li> - <li>{{jsxref("TypedArray.prototype.reverse()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/shift/index.html b/files/es/web/javascript/referencia/objetos_globales/array/shift/index.html deleted file mode 100644 index 7391f6c325..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/shift/index.html +++ /dev/null @@ -1,124 +0,0 @@ ---- -title: Array.prototype.shift() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/shift -translation_of: Web/JavaScript/Reference/Global_Objects/Array/shift ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>shift()</strong></code> elimina el <strong>primer</strong> elemento del array y lo retorna. Este método modifica la longitud del array.</p> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox notranslate"><code><var>arr</var>.shift()</code></pre> - -<h2 id="Descripción">Descripción</h2> - -<p>El método <code>shift</code> elimina el elemento en el índice cero y desplaza los valores consecutivos hacia abajo, devolviendo el valor eliminado. Si la propiedad {{jsxref("Array.length", "length")}} es 0, devuelve {{jsxref("undefined")}}.</p> - -<p><code>shift</code> es genérico; este método puede utilizarse con {{jsxref("Function.call", "call", "", 1)}} o {{jsxref("Function.apply", "apply", "", 1)}} a objetos simliares a arrays. Los objetos que no tengan una propiedad <code>length</code> que refleje el último elemento de una serie consecutiva de propiedades numéricas con índice base cero pueden no comportarse de manera significativa.</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Eliminando_un_elemento_de_un_array">Eliminando un elemento de un array</h3> - -<p>El siguiente código muestra el contenido del array <code>miPescado</code> antes y después de eliminar el primer elemento. También muestra el elemento eliminado:</p> - -<pre class="brush: js notranslate">var miPescado = ['ángel', 'payaso', 'mandarín', 'cirujano']; - -console.log('miPescado antes: ' + miPescado); -// "miPescado antes: ángel,payaso,mandarín,cirujano" - -var eliminado = miPescado.shift(); - -console.log('miPescado después: ' + miPescado); -// "miPescado after: payaso,mandarín,cirujano" - -console.log('Elemento eliminado: ' + eliminado); -// "Elemento eliminado: ángel"</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Specification</th> - <th scope="col">Status</th> - <th scope="col">Comment</th> - </tr> - <tr> - <td>{{SpecName('ES3')}}</td> - <td>{{Spec2('ES3')}}</td> - <td>Definición inicial. Implementado en Javascript 1.2.</td> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.4.9', 'Array.prototype.shift')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td></td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.shift', 'Array.prototype.shift')}}</td> - <td>{{Spec2('ES6')}}</td> - <td></td> - </tr> - </tbody> -</table> - -<h2 id="Navegadores_compatibles">Navegadores compatibles</h2> - -<div>{{CompatibilityTable}}</div> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>Característica</th> - <th>Chrome</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari</th> - </tr> - <tr> - <td>Soporte básico</td> - <td>{{CompatChrome("1.0")}}</td> - <td>{{CompatGeckoDesktop("1.7")}}</td> - <td>{{CompatIE("5.5")}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>Característica</th> - <th>Android</th> - <th>Chrome for Android</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Soporte básico</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - </tr> - </tbody> -</table> -</div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.push()")}}</li> - <li>{{jsxref("Array.prototype.pop()")}}</li> - <li>{{jsxref("Array.prototype.unshift()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/slice/index.html b/files/es/web/javascript/referencia/objetos_globales/array/slice/index.html deleted file mode 100644 index e3ddd7e8a5..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/slice/index.html +++ /dev/null @@ -1,287 +0,0 @@ ---- -title: Array.prototype.slice() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/slice -tags: - - Arreglo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/slice ---- -<div>{{JSRef}}</div> - -<p><code><font face="Open Sans, Arial, sans-serif">El método </font><strong>slice()</strong></code> devuelve una copia de una parte del array dentro de un nuevo array empezando por <em>inicio </em>hasta <em>fin</em> (<em>fin </em>no incluido). El array original no se modificará.</p> - -<p>El código fuente de esta demostración interactiva está alojado en un repositorio Github. Si desea contribuir con ella, por favor clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> y envíenos un <em>"pull request"</em>.</p> - -<h2 id="Sintaxis">Sintaxis </h2> - -<pre class="syntaxbox"><code><var>arr</var>.slice([<var>inicio </var>[, <var>fin</var>]])</code></pre> - -<h2 id="Parámetros">Parámetros</h2> - -<dl> - <dt><code>inicio</code></dt> - <dd>Índice donde empieza la extracción. El primer elemento corresponde con el índice 0.</dd> - <dd>Si el índice especificado es negativo, indica un desplazamiento desde el final del array.<code> slice(-2)</code>extrae los dos últimos elementos del array</dd> - <dd>Si <code>inicio</code> es omitido el valor por defecto es <code>0</code>.</dd> - <dd>Si <code>inicio</code> es mayor a la longitud del array, se devuelve un array vacío.</dd> - <dt><code>fin</code></dt> - <dd>Índice que marca el final de la extracción. <code>slice</code> extrae hasta, pero sin incluir el final.</dd> - <dd><code>slice(1,4)</code> extrae desde el segundo elemento hasta el cuarto (los elementos con índices 1, 2, y 3).</dd> - <dd>Con un índice negativo, <code>fin</code> indica un desplazamiento desde el final de la secuencia. <code>slice(2,-1)</code> extrae desde el tercer hasta el penúltimo elemento en la secuencia.</dd> - <dd>Si <code>fin</code> es omitido, slice extrae hasta el final de la secuencia (<code>arr.length</code>)<code>.</code></dd> - <dd>Si <code>fin</code> es mayor a la longitud del array, <code>slice</code> extrae hasta el final de la secuencia (<code>arr.length</code>)<code>.</code></dd> -</dl> - -<h3 id="Valor_de_retorno"><code>Valor de retorno</code></h3> - -<p>Un nuevo array con los valores extraídos.</p> - -<h2 id="Descripción">Descripción</h2> - -<p><code>slice</code> <strong>no modifica</strong> el array original. Devuelve una copia plana (<em>shallow copy</em>) de los elementos especificados del array original. Los elementos del array original son copiados en el array devuelto de la siguiente manera:</p> - -<ul> - <li>Para referencias de objeto ( <strong>no</strong> el objeto en sí ), <code>slice copia la referencia dentro del nuevo array</code>. Ambos, el array original y el nuevo, referencian al mismo objeto. Si un objeto referenciado cambia, los cambios son visibles para ambos arrays.</li> - <li>Para strings, numbers y boolean (<strong>no</strong> objetos {{jsxref("Global_Objects/String", "String")}} y {{jsxref("Global_Objects/Number", "Number")}}), <code>slice</code> copia los valores en el nuevo array. Los cambios a los string, numbers y boolean en un array no afectan a los del otro array.</li> -</ul> - -<p>Si un nuevo elemento es agregado a cualquiera de los arrays, el otro array no es afectado.</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Ejemplo_Devolver_una_porción_de_un_array_existente">Ejemplo: Devolver una porción de un array existente</h3> - -<pre class="brush: js">var nombres = ['Rita', 'Pedro', 'Miguel', 'Ana', 'Vanesa']; -var masculinos = nombres.slice(1, 3); - -// masculinos contiene ['Pedro','Miguel'] -</pre> - -<h3 id="Ejemplo_Utilizando_slice">Ejemplo: Utilizando slice</h3> - -<p><span style="font-size: 14px; line-height: 1.5;">Presta especial atención a:</span></p> - -<ul> - <li>Valores de tipos básicos, como string o number, son copiados al nuevo array. Cambiar estos valores en la copia no afecta al array original.</li> - <li>Las referencias también se copian. Mismas referencias acceden al mismo objeto destino. Cambios en el objeto destino son compartidos por todos sus accesos.</li> -</ul> - -<p>En el siguiente ejemplo, <code>slice</code> crea un nuevo array, <code>nuevoCoche</code>, de <code>myCoche</code>. Los dos incluyen una referncia al objecto <code>miHonda</code> se cambia a púrpura, ambas matrices reflejan el cambio.</p> - -<pre class="brush: js"><code>var miHonda = { color: 'red', ruedas: 4, motor: { cilindros: 4, cantidad: 2.2 } }; -var miCoche = [miHonda, 2, 'Buen estado', 'comprado 1997']; -var nuevoCoche = miCoche.slice(0, 2);</code> - -// Muestra los valores de myCar, newCar y el color de myHonda.<code> -console.log('miCoche = ' + JSON.stringify(miCoche)); -console.log('nuevoCoche = ' + JSON.stringify(nuevoCoche)); -console.log('miCoche[0].color = ' + miCoche[0].color); -console.log('nuevoCoche[0].color = ' + nuevoCoche[0].color);</code> - -// Cambia el color de miHonda. -miHonda.color = 'azul'; -console.log('El nuevo color de mi Honda es ' + miHonda.color); - -// Muestra el color de myHonda referenciado desde ambos arrays. <code> -console.log('miCoche[0].color = ' + miCoche[0].color);</code> - -console.log('nuevoCoche[0].color = ' + nuevoCoche[0].color);</pre> - -<p>Este script escribe:</p> - -<pre class="brush: js"><code>miCoche = [{color: 'rojo', ruedas: 4, motor: {cilindros: 4, cantidad: 2.2}}, 2, - 'buen estado', 'comprado 1997'] -nuevoCoche = [{color: 'rojo', ruedas: 4, motor: {cilindros: 4, cantidad: 2.2}}, 2] -miCoche[0].color = rojo -nuevoCoche[0].color = rojo -El nuevo color de miHonda es azul -miCoche[0].color = azul -nuevoCoche[0].color = azul</code></pre> - -<h2 id="Objetos_array-like">Objetos array-like</h2> - -<div class="note"> -<p>Se dice que un objeto es <strong>array-like</strong> ( similar o que se asemeja a un array) cuando entre sus propiedades existen algunas cuyos nombres son <strong>números</strong> y en particular tiene una propiedad llamada <strong>length</strong>. Este hecho hace suponer que el objeto es algún tipo de colección de elementos indexados por números. Es conveniente, a veces, convertir estos objetos a arrays para otorgarles la funcionalidad que de serie se incorpora en todos los arrays a través de su prototipo. </p> -</div> - -<p>El método <code>slice</code> puede ser usado para convertir objetos parecidos a arrays o colecciones a un nuevo Array. Simplemente debe enlazar el método al objeto. El {{jsxref("Functions_and_function_scope/arguments", "arguments")}} dentro de una función es un ejemplo de un objeto parecido a arrays.</p> - -<pre class="brush: js">function list() { - return Array.prototype.slice.call(arguments, 0); -} - -var list1 = list(1, 2, 3); // [1, 2, 3] -</pre> - -<p>El enlazado puede realizarse con la función <code>.call</code> de {{jsxref("Function.prototype")}} y puede ser abreviado también usando <code>[].slice.call(arguments)</code> en lugar de <code>Array.prototype.slice.call</code>. En cualquier caso, puede ser simplificado usando {{jsxref("Function.prototype.bind", "bind")}}.</p> - -<pre class="brush: js">var unboundSlice = Array.prototype.slice; -var slice = Function.prototype.call.bind(unboundSlice); - -function list() { - return slice(arguments, 0); -} - -var list1 = list(1, 2, 3); // [1, 2, 3] -</pre> - -<h2 id="Coordinación_del_comportamiento_entre_navegadores">Coordinación del comportamiento entre navegadores</h2> - -<p> </p> - -<p>La especificación permite a los objetos del host ( entre ellos los objetos del DOM ) ser dependientes de la implementación. Esta <strong>NO</strong> obligatoriedad, origina diferencias en el comportamiento entre aquellos comprometidos con los estándares, como Mozilla, y los que no. En lo que concierne a <code>Array.prototype.slice</code> , por lo tanto, existen importantes incompatibilidades en IE < 9 . Versiones de IE a partir de la 9 permiten un comportamiento compatible más fiable. Se puede recurrir al “<em>shimming</em>” para alcanzar la compatibilidad en otros casos. Mientras otros navegadores modernos continúan mejorando para soportar esta habilidad, en la forma en que actualmente lo hacen Mozilla, Chrome, Safari, Opera e IE, los desarrolladores de código preocupados por el soporte DOM que confíen en este <em>shim</em> no deben dejarse engañar por la semántica, deben confiar de forma segura en ella para proporcionar el comportamiento estándar que aparentemente ahora es la norma.</p> - -<p>El <em>shim</em> también soluciona que IE pueda tratar con el caso de que el segundo argumento de <code>slice()</code> pueda ser un valor {{jsxref("Global_Objects/null", "null")}}/{{jsxref("Global_Objects/undefined", "undefined")}} explícito. Esto era un problema en versiones anteriores de IE, pero todos los navegadores modernos, incluído IE >= 9, lo hacen actualmente.</p> - -<pre class="brush: js">/** - * <em>Shim</em> para "solucionar" la falta de soporte de IE (IE < 9) para aplicar slice - * sobre objetos del host, tal como NamedNodeMap, NodeList, y HTMLCollection - * (técnicamente, al ser los objetos del host dependientes de la implementación, - * al menos anteriormente a ES2015, IE no tenía la necesidad de trabajar de este modo). - * También funciona sobre strings, solucionando que IE < 9 admita un undefined explícito - * como segundo argumento (igual que en Firefox), y previniendo errores cuando se llama - * sobre otros objetos del DOM. - */ -(function () { - 'use strict'; - var _slice = Array.prototype.slice; - - try { - // Fallará al usarse con elementos DOM en IE < 9 - _slice.call(document.documentElement); - } catch (e) { // Fails in IE < 9 - // Funcionará con arrays genuinos, objetos array-like, - // NamedNodeMap (attributes, entities, notations), - // NodeList (e.g., getElementsByTagName), HTMLCollection (e.g., childNodes), - // and will not fail on other DOM objects (as do DOM elements in IE < 9) - Array.prototype.slice = function(begin, end) { - // A IE < 9 no le gustan los undefined como argumento end. - end = (typeof end !== 'undefined') ? end : this.length; - - // Con objetos Array nativos, podemos usar la función slice - if (Object.prototype.toString.call(this) === '[object Array]'){ - return _slice.call(this, begin, end); - } - - // Con objetos array-like debemos manejarlo por nuestra cuenta. - var i, cloned = [], - size, len = this.length; - - // Maneja valores negativos para el argumento "inicio" - var start = begin || 0; - start = (start >= 0) ? start : Math.max(0, len + start); - - // Maneja valores negativos para el argumento "fin" - var upTo = (typeof end == 'number') ? Math.min(end, len) : len; - if (end < 0) { - upTo = len + end; - } - - // Tamaño esperado para el slice - size = upTo - start; - - if (size > 0) { - cloned = new Array(size); - if (this.charAt) { - for (i = 0; i < size; i++) { - cloned[i] = this.charAt(start + i); - } - } else { - for (i = 0; i < size; i++) { - cloned[i] = this[start + i]; - } - } - } - - return cloned; - }; - } -}()); -</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Observaciones</th> - </tr> - <tr> - <td>ECMAScript 3ª edición</td> - <td>Estandar</td> - <td>Definición inicial Implementado en JavaScript 1.2.</td> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.4.10', 'Array.prototype.slice')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ES2015', '#sec-array.prototype.slice', 'Array.prototype.slice')}}</td> - <td>{{Spec2('ES2015')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<p>La tabla de compatibilidad en esta página esta generada desde datos estructurados. Si desea contribuir con los datos, por favor <em>"checkout" </em><a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data </a> y envíenos un <em>"pull request"</em>.</p> - -<div>{{CompatibilityTable}}</div> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Chrome</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari</th> - </tr> - <tr> - <td>Soporte básico</td> - <td>{{CompatChrome("1.0")}}</td> - <td>{{CompatGeckoDesktop("1.7")}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Android</th> - <th>Chrome para Android</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Soporte básico</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - </tr> - </tbody> -</table> -</div> - -<h2 id="Ver_también">Ver también </h2> - -<ul> - <li>{{jsxref("Function.prototype.call()")}}</li> - <li>{{jsxref("Function.prototype.bind()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/some/index.html b/files/es/web/javascript/referencia/objetos_globales/array/some/index.html deleted file mode 100644 index d04b57b025..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/some/index.html +++ /dev/null @@ -1,204 +0,0 @@ ---- -title: Array.prototype.some() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/some -tags: - - Array - - ECMAScript5 - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/some ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>some()</strong></code> comprueba si al menos un elemento del array cumple con la condición implementada por la función proporcionada.</p> - -<div class="note"> -<p><strong>Nota</strong>: Este método devuelve <code>false</code> para cualquier condición puesta en un array vacío.</p> -</div> - -<div>{{EmbedInteractiveExample("pages/js/array-some.html")}}</div> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>arr</var>.some(<var>callback(element[, index[, array]])</var>[, <var>thisArg</var>])</pre> - -<h3 id="Parámetros" name="Parámetros">Parámetros</h3> - -<dl> - <dt><code>callback</code></dt> - <dd>Función que verifica cada elemento, toma tres argumentos: - <dl> - <dt><code>element</code></dt> - <dd>El elemento actual siendo procesado en el array.</dd> - <dt><code>index</code> {{Optional_inline}}</dt> - <dd>El índice del elemento del array que se está procesando.</dd> - <dt><code>array</code> {{Optional_inline}}</dt> - <dd>El array sobre el que ha sido llamada la función <code>some()</code>.</dd> - </dl> - </dd> - <dt><code>thisArg</code> {{Optional_inline}}</dt> - <dd>Valor a usar como <code>this</code> cuando se ejecute <code>callback</code>.</dd> -</dl> - -<h3 id="Valor_devuelto">Valor devuelto</h3> - -<p><code><strong>true</strong></code> si la función <code>callback</code> devuelve un valor {{Glossary("truthy")}} para cualquier elemento del array; en caso contrario, <code><strong>false</strong></code>.</p> - -<h2 id="Descripción" name="Descripción">Descripción</h2> - -<p><code>some()</code> ejecuta la función <code>callback</code> una vez por cada elemento presente en el array hasta que encuentre uno donde <code>callback</code> retorna un valor verdadero (true). Si se encuentra dicho elemento, <code>some()</code> retorna <code>true</code> inmediatamente. Si no, <code>some()</code> retorna <code>false</code>. <code>callback</code> es invocada sólo para los índices del array que tienen valores asignados; no es invocada para índices que han sido borrados o a los que nunca se les han asignado valores.</p> - -<p><code>callback</code> es invocada con tres argumentos: el valor del elemento, el índice del elemento, y el objeto array sobre el que se itera.</p> - -<p>Si se indica un parámetro <code>thisArg</code> a <code>some()</code>, se pasará a <code>callback</code> cuando es invocada, para usar como valor <code>this</code>. Si no, el valor {{jsxref("undefined")}} será pasado para usar como valor <code>this</code>. El valor <code>this</code> value observable por <code>callback</code> se determina de acuerdo a <a href="/en-US/docs/Web/JavaScript/Reference/Operators/this">las reglas habituales para determinar el <code>this</code> visible por una función</a>.</p> - -<p><code>some()</code> no modifica el array con el cual fue llamada.</p> - -<p>El rango de elementos procesados por <code>some()</code> es configurado antes de la primera invocación de <code>callback</code>. Los elementos anexados al array luego de que comience la llamada a <code>some()</code> no serán visitados por <code>callback</code>. Si un elemento existente y no visitado del array es alterado por <code>callback</code>, su valor pasado al <code>callback</code> será el valor al momento que <code>some()</code> visita el índice del elemento; los elementos borrados no son visitados.</p> - -<h2 id="Examples" name="Examples">Ejemplos</h2> - -<h3 id="Example:_Testing_size_of_all_array_elements" name="Example:_Testing_size_of_all_array_elements">Verificando el valor de los elementos de un array</h3> - -<p>El siguiente ejemplo verifica si algún elemento del array es mayor a 10.</p> - -<pre class="brush: js">function isBiggerThan10(element, index, array) { - return element > 10; -} -[2, 5, 8, 1, 4].some(isBiggerThan10); // false -[12, 5, 8, 1, 4].some(isBiggerThan10); // true -</pre> - -<h3 id="Example:_Testing_array_elements_using_arrow_functions" name="Example:_Testing_array_elements_using_arrow_functions">Verificando los elementos de un array usando funciones flecha</h3> - -<p><a href="/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions">Las funciones flecha (Arrow functions)</a> brindan una sintáxis más corta para el mismo test.</p> - -<pre class="brush: js">[2, 5, 8, 1, 4].some(elem => elem > 10); // false -[12, 5, 8, 1, 4].some(elem => elem > 10); // true -</pre> - -<h3 id="Comprobando_si_un_elemento_existe_en_un_array">Comprobando si un elemento existe en un array</h3> - -<p>Para imitar la función del método <code>includes()</code>, esta función personalizada devuelve <code>true</code> si el elemento existe en el array:</p> - -<pre class="brush: js">var fruits = ['apple', 'banana', 'mango', 'guava']; - -function checkAvailability(arr, val) { - return arr.some(function(arrVal) { - return val === arrVal; - }); -} - -checkAvailability(fruits, 'kela'); // false -checkAvailability(fruits, 'banana'); // true</pre> - -<h3 id="Comprobando_si_un_elemento_existe_en_un_array_con_funciones_flecha">Comprobando si un elemento existe en un array con funciones flecha</h3> - -<pre class="brush: js">var fruits = ['apple', 'banana', 'mango', 'guava']; - -function checkAvailability(arr, val) { - return arr.some(arrVal => val === arrVal); -} - -checkAvailability(fruits, 'kela'); // false -checkAvailability(fruits, 'banana'); // true</pre> - -<h3 id="Convirtiendo_cualquier_valor_a_Boolean">Convirtiendo cualquier valor a Boolean</h3> - -<pre class="brush: js">var TRUTHY_VALUES = [true, 'true', 1]; - -function getBoolean(value) { - 'use strict'; - - if (typeof value === 'string') { - value = value.toLowerCase().trim(); - } - - return TRUTHY_VALUES.some(function(t) { - return t === value; - }); -} - -getBoolean(false); // false -getBoolean('false'); // false -getBoolean(1); // true -getBoolean('true'); // true</pre> - -<h2 id="Polyfill" name="Polyfill">Polyfill</h2> - -<p><code>some()</code> fue agregado al estándar ECMA-262 en la 5ta edición; por ello, puede no estar presente en todas las implementaciones del estándar. Puedes trabajar sobre esto insertando el siguiente código al comienzo de tus scripts, permitiendo el uso de <code>some()</code> en implementaciones que no tienen soporte nativo. Este algoritmo es exactamente el mismo especificado en ECMA-262, 5ta edición, asumiendo que {{jsxref("Global_Objects/Object", "Object")}} y {{jsxref("Global_Objects/TypeError", "TypeError")}} tienen sus valores originales y que <code>fun.call</code> evalúa el valor original de{{jsxref("Function.prototype.call()")}}.</p> - -<pre class="brush: js">// Pasos de producción de ECMA-262, Edición 5, 15.4.4.17 -// Referencia: http://es5.github.io/#x15.4.4.17 -if (!Array.prototype.some) { - Array.prototype.some = function(fun/*, thisArg*/) { - 'use strict'; - - if (this == null) { - throw new TypeError('Array.prototype.some called on null or undefined'); - } - - if (typeof fun !== 'function') { - throw new TypeError(); - } - - var t = Object(this); - var len = t.length >>> 0; - - var thisArg = arguments.length >= 2 ? arguments[1] : void 0; - for (var i = 0; i < len; i++) { - if (i in t && fun.call(thisArg, t[i], i, t)) { - return true; - } - } - - return false; - }; -} -</pre> - -<h2 id="Especificaciones" name="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.4.17', 'Array.prototype.some')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td>Definición inicial. Implementado en JavaScript 1.6.</td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.some', 'Array.prototype.some')}}</td> - <td>{{Spec2('ES6')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.some', 'Array.prototype.some')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_en_navegadores" name="Compatibilidad_en_navegadores">Compatibilidad en navegadores</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Array.some")}}</p> -</div> - -<h2 id="Ver_también" name="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.forEach()")}}</li> - <li>{{jsxref("Array.prototype.every()")}}</li> - <li>{{jsxref("Array.prototype.find()")}}</li> - <li>{{jsxref("TypedArray.prototype.some()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/sort/index.html b/files/es/web/javascript/referencia/objetos_globales/array/sort/index.html deleted file mode 100644 index ac28826327..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/sort/index.html +++ /dev/null @@ -1,301 +0,0 @@ ---- -title: Array.prototype.sort() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/sort -tags: - - Array - - JavaScript - - Método(2) - - Prototipo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/sort ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>sort()</strong></code> ordena los elementos de un arreglo (array) <em>localmente</em> y devuelve el arreglo ordenado. La ordenación no es necesariamente <a href="https://en.wikipedia.org/wiki/Sorting_algorithm#Stability">estable</a>. El modo de ordenación por defecto responde a la posición del valor del string de acuerdo a su valor <a href="https://es.wikipedia.org/wiki/Unicode">Unicode</a>.</p> - -<p id="tw-target-text">La fuente de este ejemplo interactivo se almacena en un repositorio de GitHub. Si desea contribuir al proyecto de ejemplos interactivos, clone https://github.com/mdn/interactive-examples y envíenos una solicitud de extracción (pull request).</p> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox notranslate"><code><var>arr</var>.sort([<var>compareFunction</var>])</code></pre> - -<h3 id="Parámetros">Parámetros</h3> - -<dl> - <dt><code>compareFunction</code></dt> - <dd>Opcional. Especifica una función que define el modo de ordenamiento. Si se omite, el array es ordenado atendiendo a la posición del valor <a href="/en-US/docs/Web/JavaScript/Guide/Values,_variables,_and_literals#Unicode">Unicode</a> de cada caracter, según la conversión a string de cada elemento.</dd> - <dt><code>firstEl</code></dt> - <dd>El primer elemento a comparar.</dd> - <dt><code>secondEl</code></dt> - <dd>El segundo elemento a comparar.</dd> -</dl> - -<h3 id="Valor_devuelto">Valor devuelto</h3> - -<p>El array ordenado.</p> - -<h2 id="Descripción">Descripción</h2> - -<p>Si no se provee <code>compareFunction</code>, los elementos son ordenados convirtiéndolos a strings y comparando la posición del valor Unicode de dichos strings. Por ejemplo, "Cherry" viene antes que "banana" (porque las mayúsculas van antes que las minúsculas en la codificación Unicode) . En un ordenamiento numérico, 9 está antes que 80, pero dado que los números son convertidos a strings y ordenados según el valor Unicode, el resultado será "80" antes que "9".</p> - -<pre class="brush: js notranslate">var frutas = ['guindas', 'manzanas', 'bananas']; -frutas.sort(); // ['bananas', 'guindas', 'manzanas'] - -var puntos = [1, 10, 2, 21]; -puntos.sort(); // [1, 10, 2, 21] -// Tenga en cuenta que 10 viene antes que 2 -// porque '10' viene antes que '2' según la posición del valor Unicode. - -var cosas = ['word', 'Word', '1 Word', '2 Words']; -cosas.sort(); // ['1 Word', '2 Words', 'Word', 'word'] -// En Unicode, los números vienen antes que las letras mayúsculas -// y estas vienen antes que las letras minúsculas. -</pre> - -<p>Si se provee <code>compareFunction</code>, los elementos del array son ordenados de acuerdo al valor que retorna dicha función de comparación. Siendo <code>a</code> y <code>b</code> dos elementos comparados, entonces:</p> - -<ul> - <li>Si <code>compareFunction(a, b)</code> es menor que 0, se sitúa <code>a</code> en un indice menor que <code>b</code>. Es decir, <code>a</code> viene primero.</li> - <li>Si <code>compareFunction(a, b)</code> retorna 0, se deja <code>a</code> y <code>b</code> sin cambios entre ellos, pero ordenados con respecto a todos los elementos diferentes. Nota: el estandar ECMAscript no garantiza este comportamiento, por esto no todos los navegadores (p.ej. Mozilla en versiones que datan hasta el 2003) respetan esto.</li> - <li>Si <code>compareFunction(a, b)</code> es mayor que 0, se sitúa <code>b</code> en un indice menor que <code>a</code>.</li> - <li><code>compareFunction(a, b)</code> siempre debe retornar el mismo valor dado un par especifico de elementos a y b como sus argumentos. Si se retornan resultados inconsistentes entonces el orden de ordenamiento es indefinido.</li> -</ul> - -<p>Entonces, la función de comparación tiene la siguiente forma:</p> - -<pre class="brush: js notranslate">function compare(a, b) { - if (a es menor que b según criterio de ordenamiento) { - return -1; - } - if (a es mayor que b según criterio de ordenamiento) { - return 1; - } - // a debe ser igual b - return 0; -} -</pre> - -<p>Para comparar números en lugar de strings, la función de comparación puede simplemente restar <code>b</code> de <code>a</code>. La siguiente función ordena el array de modo ascendente:</p> - -<pre class="brush: js notranslate">function compareNumbers(a, b) { - return a - b; -} -</pre> - -<p>El metodo <code>sort</code> puede ser usado convenientemente con {{jsxref("Operators/function", "function expressions", "", 1)}} (y <a href="/en-US/docs/Web/JavaScript/Guide/Closures">closures</a>):</p> - -<pre class="brush: js notranslate">var numbers = [4, 2, 5, 1, 3]; -numbers.sort(function(a, b) { - return a - b; -}); -console.log(numbers); - -</pre> - -<pre class="notranslate"><code>// [1, 2, 3, 4, 5]</code></pre> - -<p>Los objectos pueden ser ordenados por el valor de una de sus propiedades.</p> - -<pre class="brush: js notranslate">var items = [ - { name: 'Edward', value: 21 }, - { name: 'Sharpe', value: 37 }, - { name: 'And', value: 45 }, - { name: 'The', value: -12 }, - { name: 'Magnetic', value: 13 }, - { name: 'Zeros', value: 37 } -]; -items.sort(function (a, b) { - if (a.name > b.name) { - return 1; - } - if (a.name < b.name) { - return -1; - } - // a must be equal to b - return 0; -}); -</pre> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Creating.2C_displaying.2C_and_sorting_an_array" name="Creating.2C_displaying.2C_and_sorting_an_array">Ordenando un array</h3> - -<p>Un array de elementos string, sin especificar una función de comparación:</p> - -<pre class="brush: js notranslate">var arr = [ 'a', 'b', 'Z', 'Aa', 'AA' ]; -arr.sort(); //[ 'AA', 'Aa', 'Z', 'a', 'b' ] -</pre> - -<p>Un array de elementos numéricos, sin función de comparación:</p> - -<pre class="brush: js notranslate">var arr = [ 40, 1, 5, 200 ]; -arr.sort(); //[ 1, 200, 40, 5 ] -</pre> - -<p>Un array de elementos numéricos, usando una función de comparación:</p> - -<pre class="brush: js notranslate">var arr = [ 40, 1, 5, 200 ]; -function comparar ( a, b ){ return a - b; } -arr.sort( comparar ); // [ 1, 5, 40, 200 ]</pre> - -<p>Lo mismo pero usando una función anónima normal:</p> - -<pre class="brush: js notranslate">var arr = [ 40, 1, 5, 200 ]; -arr.sort(function(a,b){return a - b;}); // [ 1, 5, 40, 200 ]</pre> - -<p>Lo mismo escrito más compacto mediante una <a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Funciones/Arrow_functions">función flecha</a>:</p> - -<pre class="brush: js notranslate">var arr = [ 40, 1, 5, 200 ]; -arr.sort((a,b)=>a-b); // [ 1, 5, 40, 200 ]</pre> - -<h3 id="Creating.2C_displaying.2C_and_sorting_an_array" name="Creating.2C_displaying.2C_and_sorting_an_array"></h3> - -<h3 id="Creating.2C_displaying.2C_and_sorting_an_array" name="Creating.2C_displaying.2C_and_sorting_an_array">Creando, mostrando, y ordenando un array</h3> - -<p>El siguiente ejemplo abunda en la idea de ordenar con y sin función de comparación. Además, ilustra una manera de mostrar un array una vez creado. El método <a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Array/join">join</a> es usado para convertir el array en una cadena de texto que imprimir. Al no pasarle un argumento que indique el separador, usará la coma por defecto para separar los elementos del array dentro de la cadena.</p> - -<pre class="brush: js notranslate">var arr = ['80', '9', '700', 40, 1, 5, 200]; -function comparar(a, b) { - return a - b; -} -console.log('original:', arr.join()); -console.log('ordenado sin función:', arr.sort()); -console.log('ordenado con función:', arr.sort(comparar)); -</pre> - -<p>El ejemplo produce el siguiente resultado. Como muestra la salida, cuando una función de comparación es usada, los números se ordenan correctamente, sean estos valores numéricos o strings numéricos.</p> - -<pre class="notranslate">original: 80,9,700,40,1,5,200 -ordenado sin función: 1,200,40,5,700,80,9 -ordenado con función: 1,5,9,40,80,200,700 -</pre> - -<h3 id="Ordenando_caracteres_no_ASCII">Ordenando caracteres no ASCII</h3> - -<p>Para ordenar strings con characters no ASCII, i.e. strings con caracteres con acento (e, é, è, a, ä, etc.), strings de lenguajes diferentes al inglés: use {{jsxref("String.localeCompare")}}. Esta función puede comparar esos caracteres para que aparezcan en el orden correcto.</p> - -<pre class="brush: js notranslate">var items = ['réservé', 'premier', 'cliché', 'communiqué', 'café', 'adieu']; -items.sort(function (a, b) { - return a.localeCompare(b); -}); - -// items is ['adieu', 'café', 'cliché', 'communiqué', 'premier', 'réservé'] -</pre> - -<h3 id="Ordenando_con_map">Ordenando con map</h3> - -<p>La <code>compareFunction</code> puede ser invocada múltiples veces por elemento dentro del array. Dependiendo de la naturaleza de <code>compareFunction</code>, este puede resultar en una alta penalización de rendimiento. Cuanto más trabajo hace una <code>compareFunction</code> y más elementos hay para ordenar, resulta más recomendable usar una función <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map">map</a> para ordenar. La idea es recorrer el array una sola vez para extraer los valores usados para ordenar en un array temporal, ordenar el array temporal y luego recorrer el array para lograr el orden correcto.</p> - -<pre class="brush: js notranslate">// el array a ordenar -var list = ['Delta', 'alpha', 'CHARLIE', 'bravo']; - -// array temporal contiene objetos con posición y valor de ordenamiento -var mapped = list.map(function(el, i) { - return { index: i, value: el.toLowerCase() }; -}) - -// ordenando el array mapeado que contiene los valores reducidos -mapped.sort(function(a, b) { - if (a.value > b.value) { - return 1; - } - if (a.value < b.value) { - return -1; - } - return 0; -}); - -// contenedor para el orden resultante -var result = mapped.map(function(el){ - return list[el.index]; -}); -</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>ECMAScript 1st Edition</td> - <td>Standard</td> - <td>Definicióñ inicial.</td> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.4.11', 'Array.prototype.sort')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td></td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.sort', 'Array.prototype.sort')}}</td> - <td>{{Spec2('ES6')}}</td> - <td></td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_en_navegadores">Compatibilidad en navegadores</h2> - -<div>{{CompatibilityTable}}</div> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Chrome</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{CompatChrome("1.0")}}</td> - <td>{{CompatGeckoDesktop("1.7")}}</td> - <td>{{CompatIE("5.5")}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Android</th> - <th>Chrome for Android</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatVersionUnknown}}</td> - </tr> - </tbody> -</table> -</div> - -<h2 id="Compatibilidad_en_navegadores_2">Compatibilidad en navegadores</h2> - -<p>La tabla de compatibilidad en esta página es generada por una data estructurada. Si deseas contribuir a la data, por favor entra a <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> y envíanos un pull request.</p> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.reverse()")}}</li> - <li>{{jsxref("String.prototype.localeCompare()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/splice/index.html b/files/es/web/javascript/referencia/objetos_globales/array/splice/index.html deleted file mode 100644 index 5d7992a2c4..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/splice/index.html +++ /dev/null @@ -1,148 +0,0 @@ ---- -title: Array.prototype.splice() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/splice -tags: - - Array - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/splice ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>splice()</strong></code> cambia el contenido de un array eliminando elementos existentes y/o agregando nuevos elementos.</p> - -<p>{{EmbedInteractiveExample("pages/js/array-splice.html")}}</p> - -<h2 id="Sintaxis" name="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>array</var>.splice(<var>start[</var>, <var>deleteCount[</var>, <var>item1[</var>, <var>item2[</var>, <em>...]]]]</em>) -</pre> - -<h3 id="Parámetros">Parámetros</h3> - -<dl> - <dt><code>start</code></dt> - <dd>Índice donde se comenzará a cambiar el array (con 0 como origen). Si es mayor que la longitud del array, el punto inicial será la longitud del array. Si es negativo, empezará esa cantidad de elementos contando desde el final.</dd> - <dt><code>deleteCount</code> {{optional_inline}}</dt> - <dd>Un entero indicando el número de elementos a eliminar del array antiguo.</dd> - <dd>Si <code>deleteCount</code> se omite, o si su valor es mayor que <code>arr.length - start</code> (esto significa, si es mayor que el número de elementos restantes del array, comenzando desde <code>start</code>), entonces todos los elementos desde <code>start</code> hasta el final del array serán eliminados.</dd> - <dd>Si <code>deleteCount</code> es igual a 0 o negativo, no se eliminará ningún elemento. En este caso, se debe especificar al menos un nuevo elemento (ver más abajo).</dd> - <dt><code>item1, item2, <em>...</em></code> {{optional_inline}}</dt> - <dd>Los elementos que se agregarán al array, empezando en el índice <code>start</code>. Si no se especifica ningún elemento, <code>splice()</code> solamente eliminará elementos del array.</dd> -</dl> - -<h3 id="Valor_devuelto">Valor devuelto</h3> - -<p>Un array que contiene los elementos eliminados. Si sólo se ha eliminado un elemento, devuelve un array con un solo elemento. Si no se ha eliminado ningún elemento, devuelve un array vacío.</p> - -<h2 id="Descripción">Descripción</h2> - -<p>Si especifica un número diferente de elementos a agregar que los que se eliminarán, el array tendrá un tamaño diferente al original una vez finalizada la llamada.</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Eliminar_0_elementos_desde_el_índice_2_e_insertar_drum">Eliminar 0 elementos desde el índice 2 e insertar "drum"</h3> - -<pre class="brush: js">var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; -var removed = myFish.splice(2, 0, 'drum'); - -// myFish is ["angel", "clown", "drum", "mandarin", "sturgeon"] -// removed is [], no elements removed -</pre> - -<h3 id="Eliminar_1_elemento_desde_el_índice_3">Eliminar 1 elemento desde el índice 3</h3> - -<pre class="brush: js">var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon']; -var removed = myFish.splice(3, 1); - -// removed is ["mandarin"] -// myFish is ["angel", "clown", "drum", "sturgeon"] -</pre> - -<h3 id="Eliminar_1_elemento_desde_el_índice_2_e_insertar_trumpet">Eliminar 1 elemento desde el índice 2 e insertar "trumpet"</h3> - -<pre class="brush: js">var myFish = ['angel', 'clown', 'drum', 'sturgeon']; -var removed = myFish.splice(2, 1, 'trumpet'); - -// myFish is ["angel", "clown", "trumpet", "sturgeon"] -// removed is ["drum"]</pre> - -<h3 id="Eliminar_2_elementos_desde_el_índice_0_e_insertar_parrot_anemone_y_blue">Eliminar 2 elementos desde el índice 0 e insertar "parrot", "anemone" y "blue"</h3> - -<pre class="brush: js">var myFish = ['angel', 'clown', 'trumpet', 'sturgeon']; -var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue'); - -// myFish is ["parrot", "anemone", "blue", "trumpet", "sturgeon"] -// removed is ["angel", "clown"]</pre> - -<h3 id="Eliminar_2_elementos_desde_el_índice_2">Eliminar 2 elementos desde el índice 2</h3> - -<pre class="brush: js">var myFish = ['parrot', 'anemone', 'blue', 'trumpet', 'sturgeon']; -var removed = myFish.splice(myFish.length - 3, 2); - -// myFish is ["parrot", "anemone", "sturgeon"] -// removed is ["blue", "trumpet"]</pre> - -<h3 id="Eliminar_1_elemento_desde_el_índice_-2">Eliminar 1 elemento desde el índice -2</h3> - -<pre class="brush: js">var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; -var removed = myFish.splice(-2, 1); - -// myFish is ["angel", "clown", "sturgeon"] -// removed is ["mandarin"]</pre> - -<h3 id="Eliminar_todos_los_elementos_tras_el_índice_2_(incl.)">Eliminar todos los elementos tras el índice 2 (incl.)</h3> - -<pre class="brush: js">var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; -var removed = myFish.splice(2); - -// myFish is ["angel", "clown"] -// removed is ["mandarin", "sturgeon"]</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES3')}}</td> - <td>{{Spec2('ES3')}}</td> - <td>Initial definition. Implemented in JavaScript 1.2.</td> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.4.12', 'Array.prototype.splice')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.splice', 'Array.prototype.splice')}}</td> - <td>{{Spec2('ES6')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.splice', 'Array.prototype.splice')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div> -<p>{{Compat("javascript.builtins.Array.splice")}}</p> -</div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.push()", "push()")}} / {{jsxref("Array.prototype.pop()", "pop()")}} — añade/elimina elementos desde el final de un array</li> - <li>{{jsxref("Array.prototype.unshift()", "unshift()")}} / {{jsxref("Array.prototype.shift()", "shift()")}} — añade/elimina elementos desde el principio de un array</li> - <li>{{jsxref("Array.prototype.concat()", "concat()")}} — devuelve un nuevo array compuesto por este array unido a otro/s array/s y/o valor/es</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/tolocalestring/index.html b/files/es/web/javascript/referencia/objetos_globales/array/tolocalestring/index.html deleted file mode 100644 index 0fc418ab47..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/tolocalestring/index.html +++ /dev/null @@ -1,177 +0,0 @@ ---- -title: Array.prototype.toLocaleString() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/toLocaleString -translation_of: Web/JavaScript/Reference/Global_Objects/Array/toLocaleString ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>toLocaleString()</strong></code> devuelve una cadena de texto representando los elementos del array. Los elementos son convertidos a texto usando su método <code>toLocaleString</code> y dichos Strings son separados por un caracter específico para la localidad (como una coma para la separación de decimales “,”).</p> - -<div>{{EmbedInteractiveExample("pages/js/array-tolocalestring.html")}}</div> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>arr</var>.toLocaleString([<var>locales[</var>, <var>options]]</var>); -</pre> - -<h3 id="Parámetros">Parámetros</h3> - -<dl> - <dt><code>locales</code> {{optional_inline}}</dt> - <dd>Una cadena de texto con una etiqueta de idioma BCP 47, o un array de dichos strings. Para la forma general e interpretación the los argumentos <code>locales</code>, ver la página {{jsxref("Intl")}}.</dd> - <dt><code>options</code> {{optional_inline}}</dt> - <dd>Un objeto con las configuraciones, para números ver {{jsxref("Number.prototype.toLocaleString()")}}, y para fechas ver {{jsxref("Date.prototype.toLocaleString()")}}.</dd> -</dl> - -<h3 id="Valor_de_retorno">Valor de retorno</h3> - -<p>Una cadena de texto representando los elementos del array.</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Usando_locales_y_options">Usando <code>locales</code> y <code>options</code></h3> - -<p>Los elementos del array son convertidos a strings usando sus métodos <code>toLocaleString</code>.</p> - -<ul> - <li><code>Object</code>: {{jsxref("Object.prototype.toLocaleString()")}}</li> - <li><code>Number</code>: {{jsxref("Number.prototype.toLocaleString()")}}</li> - <li><code>Date</code>: {{jsxref("Date.prototype.toLocaleString()")}}</li> -</ul> - -<p>Siempre mostrar la moneda para los strings y números en el array <code>precios</code>:</p> - -<pre class="brush: js">var precios = ['$7', 500, 8123, 12]; -precios.toLocaleString('es-AR', { style: 'currency', currency: 'ARS' }); - -// "$7, $500, $8.123, $12" -</pre> - -<p>Para más ejemplos, ver también {{jsxref("Intl")}}, {{jsxref("NumberFormat")}}, y {{jsxref("DateTimeFormat")}}.</p> - -<h2 id="Polyfill">Polyfill</h2> - -<pre class="brush: js">// https://tc39.github.io/ecma402/#sup-array.prototype.tolocalestring -if (!Array.prototype.toLocaleString) { - Object.defineProperty(Array.prototype, 'toLocaleString', { - value: function(locales, options) { - // 1. Let O be ? ToObject(this value). - if (this == null) { - throw new TypeError('"this" is null or not defined'); - } - - var a = Object(this); - - // 2. Let len be ? ToLength(? Get(A, "length")). - var len = a.length >>> 0; - - // 3. Let separator be the String value for the - // list-separator String appropriate for the - // host environment's current locale (this is - // derived in an implementation-defined way). - // NOTE: In this case, we will use a comma - var separator = ','; - - // 4. If len is zero, return the empty String. - if (len === 0) { - return ''; - } - - // 5. Let firstElement be ? Get(A, "0"). - var firstElement = a[0]; - // 6. If firstElement is undefined or null, then - // a.Let R be the empty String. - // 7. Else, - // a. Let R be ? - // ToString(? - // Invoke( - // firstElement, - // "toLocaleString", - // « locales, options » - // ) - // ) - var r = firstElement == null ? - '' : firstElement.toLocaleString(locales, options); - - // 8. Let k be 1. - var k = 1; - - // 9. Repeat, while k < len - while (k < len) { - // a. Let S be a String value produced by - // concatenating R and separator. - var s = r + separator; - - // b. Let nextElement be ? Get(A, ToString(k)). - var nextElement = a[k]; - - // c. If nextElement is undefined or null, then - // i. Let R be the empty String. - // d. Else, - // i. Let R be ? - // ToString(? - // Invoke( - // nextElement, - // "toLocaleString", - // « locales, options » - // ) - // ) - r = nextElement == null ? - '' : nextElement.toLocaleString(locales, options); - - // e. Let R be a String value produced by - // concatenating S and R. - r = s + r; - - // f. Increase k by 1. - k++; - } - - // 10. Return R. - return r; - } - }); -} -</pre> - -<p>Si necesitas soportar motores de JavaScript obsoletos que no compatibilizan con <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty">Object.defineProperty</a></code>, es mejor no utilizar los métodos <code>Array.prototype</code>, ya que no se pueden hacer no-enumerables.</p> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td>La definicion original fue en ECMAScript 3.</td> - </tr> - <tr> - <td>{{SpecName('ES Int Draft', '#sup-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}}</td> - <td>{{Spec2('ES Int Draft')}}</td> - <td>Esta definición reemplaza la proporcionada en ECMA-262.</td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Array.toLocaleString")}}</p> -</div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.toString()")}}</li> - <li>{{jsxref("Intl")}}</li> - <li>{{jsxref("Object.prototype.toLocaleString()")}}</li> - <li>{{jsxref("Number.prototype.toLocaleString()")}}</li> - <li>{{jsxref("Date.prototype.toLocaleString()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/tosource/index.html b/files/es/web/javascript/referencia/objetos_globales/array/tosource/index.html deleted file mode 100644 index ffd8df0b3b..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/tosource/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Array.prototype.toSource() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/toSource -translation_of: Web/JavaScript/Reference/Global_Objects/Array/toSource ---- -<div>{{JSRef}} {{non-standard_header}}</div> - -<p>El método <code><strong>toSource()</strong></code> devuelve un string representando el código fuente de un arreglo.</p> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>arr</var>.toSource()</pre> - -<h3 id="Valor_devuelto">Valor devuelto</h3> - -<p>Un string representando el código fuente del arreglo.</p> - -<h2 id="Descripción">Descripción</h2> - -<p>El método <code>toSource</code>r retorna los siguientes valores:</p> - -<ul> - <li>Para el objeto global {{jsxref("Array")}}, <code>toSource</code> devuelve el siguiente string indicando que el código fuente no está disponible: - - <pre class="brush: js">function Array() { - [native code] -} -</pre> - </li> - <li>Para instancias de {{jsxref("Array")}}, <code>toSource</code> devuelve un string representando el código fuente.</li> -</ul> - -<p>Este método suele ser llamado internamente por JavaScript y no explícitamente en código. Puede usar <code>toSource</code> mientras depura para examinar el contenido de un arreglo.</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Examinar_el_código_fuente_de_un_arreglo">Examinar el código fuente de un arreglo</h3> - -<p>Para examinar el código fuente de un arreglo:</p> - -<pre class="brush: js">var alpha = new Array('a', 'b', 'c'); - -alpha.toSource(); -//devuelve ['a', 'b', 'c'] -</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<p>No hace parte de ningún estándar. Implementado en JavaScript 1.3.</p> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div>{{CompatibilityTable}}</div> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>Característica</th> - <th>Chrome</th> - <th>Edge</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari</th> - </tr> - <tr> - <td>Soporte básico</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>Característica</th> - <th>Android</th> - <th>Chrome for Android</th> - <th>Edge</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Soporte básicot</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatVersionUnknown}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - <td>{{CompatNo}}</td> - </tr> - </tbody> -</table> -</div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Object.prototype.toSource()")}}</li> - <li>{{jsxref("Array.prototype.toString()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/tostring/index.html b/files/es/web/javascript/referencia/objetos_globales/array/tostring/index.html deleted file mode 100644 index 402f011e0f..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/tostring/index.html +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Array.prototype.toString() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/toString -tags: - - Array - - JavaScript - - Prototipo - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/toString ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>toString()</strong></code> devuelve una cadena de caracteres representando el array especificado y sus elementos.</p> - -<p>{{EmbedInteractiveExample("pages/js/array-tostring.html")}}</p> - -<h2 id="Sintaxis">Sintaxis </h2> - -<pre class="syntaxbox"><code><var>arr</var>.toString()</code></pre> - -<h3 id="Valor_devuelto">Valor devuelto</h3> - -<p>Una cadena de caracteres representando los elementos del array.</p> - -<h2 id="Descripción">Descripción</h2> - -<p>El objeto {{jsxref("Array")}} sustituye al método <code>toString</code> de {{jsxref("Object")}}. Para los objetos <code>Array</code>, el método <code>toString</code> une el array y devuelve una cadena de caracteres que contiene cada elemento del array separado por comas.</p> - -<p>JavaScript llama al método <code>toString</code> automáticamente cuando un array va a ser representado como un valor de texto o cuando se referencia a un array en una concatenación de caracteres.</p> - -<h3 id="Semántica_de_ECMAScript_5">Semántica de ECMAScript 5 </h3> - -<p>Desde JavaScript 1.8.5 (Firefox 4), y consistente con la 5ª edición de semántica de ECMAScript, el método <code>toString()</code> es genérico y puede ser usado con cualquier objeto. {{jsxref("Object.prototype.toString()")}} será llamado y devolverá el valor resultante.</p> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES1')}}</td> - <td>{{Spec2('ES1')}}</td> - <td>Definición inicial. Implementado en JavaScript 1.1.</td> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.4.2', 'Array.prototype.toString')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.tostring', 'Array.prototype.toString')}}</td> - <td>{{Spec2('ES6')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.tostring', 'Array.prototype.toString')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div> -<p>{{Compat("javascript.builtins.Array.toString")}}</p> -</div>> - -<h2 id="Vea_también">Vea también</h2> - -<ul> - <li>{{jsxref("Array.prototype.join()")}}</li> - <li>{{jsxref("Object.prototype.toSource()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/unshift/index.html b/files/es/web/javascript/referencia/objetos_globales/array/unshift/index.html deleted file mode 100644 index 4641a05d98..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/unshift/index.html +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: Array.prototype.unshift() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/unshift -tags: - - Array - - JavaScript - - Prototipo - - Referencia - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/unshift ---- -<div>{{JSRef}}</div> - -<p>El método <code><strong>unshift()</strong></code> agrega uno o más elementos al inicio del array, y devuelve la nueva longitud del array.</p> - -<p>{{EmbedInteractiveExample("pages/js/array-unshift.html")}}</p> - -<h2 id="Syntax" name="Syntax">Sintaxis</h2> - -<pre class="syntaxbox"><var>arr</var>.unshift(<var>elemento1</var>[, ...[, <var>elementoN</var>]])</pre> - -<h3 id="Parameters" name="Parameters">Parámetros</h3> - -<dl> - <dt><code>elemento<em>N</em></code></dt> - <dd>Elementos a agregar al inicio del array.</dd> -</dl> - -<h3 id="Returns" name="Returns">Devuelve</h3> - -<p>La nueva propiedad {{jsxref("Array.length", "length")}} del objeto sobre el cual el método fue llamado.</p> - -<h2 id="Description" name="Description">Descripción</h2> - -<p>El método <code>unshift</code> inserta los valores proporcionados al inicio de un objeto del tipo array.</p> - -<p><code>unshift</code> es intencionalmente genérico; este método puede ser {{jsxref("Function.call", "called", "", 1)}} o {{jsxref("Function.apply", "applied", "", 1)}} a objetos similares a arrays. Objetos que no contengan una propiedad <code>length</code> reflejando una serie de propiedades numéricas consecutivas, comenzada a partir del cero, pueden no comportarse de una manera comprensible.</p> - -<h2 id="Examples" name="Examples">Ejemplos</h2> - -<pre class="brush: js">var arr = [1, 2]; - -arr.unshift(0); // resultado de la llamada es 3, la nueva longitud del array -// arr es [0, 1, 2] - -arr.unshift(-2, -1); // = 5 -// arr es [-2, -1, 0, 1, 2] - -arr.unshift([-3]); -// arr es [[-3], -2, -1, 0, 1, 2] -</pre> - -<h2 id="Specifications" name="Specifications">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Status</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES3')}}</td> - <td>{{Spec2('ES3')}}</td> - <td>Initial definition. Implemented in JavaScript 1.2.</td> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.4.4.13', 'Array.prototype.unshift')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-array.prototype.unshift', 'Array.prototype.unshift')}}</td> - <td>{{Spec2('ES6')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.unshift', 'Array.prototype.unshift')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_en_navegadores">Compatibilidad en navegadores</h2> - -<div> - - -<p>{{Compat("javascript.builtins.Array.unshift")}}</p> -</div> - -<h2 id="Ver_también">Ver también</h2> - -<ul> - <li>{{jsxref("Array.prototype.push()")}}</li> - <li>{{jsxref("Array.prototype.pop()")}}</li> - <li>{{jsxref("Array.prototype.shift()")}}</li> - <li>{{jsxref("Array.prototype.concat()")}}</li> -</ul> diff --git a/files/es/web/javascript/referencia/objetos_globales/array/values/index.html b/files/es/web/javascript/referencia/objetos_globales/array/values/index.html deleted file mode 100644 index dbc76e8634..0000000000 --- a/files/es/web/javascript/referencia/objetos_globales/array/values/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Array.prototype.values() -slug: Web/JavaScript/Referencia/Objetos_globales/Array/values -tags: - - Array - - ECMAScript 2015 - - Iterador - - JavaScript - - Prototipo - - metodo -translation_of: Web/JavaScript/Reference/Global_Objects/Array/values ---- -<div>{{JSRef}}</div> - -<p>El método <strong><code>values()</code></strong> devuelve un nuevo objeto <strong><code>Array Iterator</code></strong> que contiene los valores para cada índice del array.</p> - -<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">var</span> a <span class="operator token">=</span> <span class="punctuation token">[</span><span class="string token">'w'</span><span class="punctuation token">,</span> <span class="string token">'y'</span><span class="punctuation token">,</span> <span class="string token">'k'</span><span class="punctuation token">,</span> <span class="string token">'o'</span><span class="punctuation token">,</span> <span class="string token">'p'</span><span class="punctuation token">]</span><span class="punctuation token">;</span> -<span class="keyword token">var</span> iterator <span class="operator token">=</span> a<span class="punctuation token">.</span><span class="function token">values</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> - -console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>iterator<span class="punctuation token">.</span><span class="function token">next</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">.</span>value<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// w </span> -console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>iterator<span class="punctuation token">.</span><span class="function token">next</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">.</span>value<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// y </span> -console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>iterator<span class="punctuation token">.</span><span class="function token">next</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">.</span>value<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// k </span> -console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>iterator<span class="punctuation token">.</span><span class="function token">next</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">.</span>value<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// o </span> -console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>iterator<span class="punctuation token">.</span><span class="function token">next</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">.</span>value<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// p</span></code> -</pre> - -<h2 id="Sintaxis">Sintaxis</h2> - -<pre class="syntaxbox"><var>arr</var>.values() -</pre> - -<h3 id="Valor_devuelto">Valor devuelto</h3> - -<p>Un nuevo objeto {{jsxref("Array")}} iterator.</p> - -<h2 id="Ejemplos">Ejemplos</h2> - -<h3 id="Iteración_usando_un_bucle_for...of">Iteración usando un bucle <code>for...of</code></h3> - -<pre class="brush: js">var arr = ['w', 'y', 'k', 'o', 'p']; -var iterador = arr.values(); - -for (let letra of iterador) { - console.log(letra); -} -</pre> - -<h2 id="Especificaciones">Especificaciones</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Especificación</th> - <th scope="col">Estado</th> - <th scope="col">Comentario</th> - </tr> - <tr> - <td>{{SpecName('ES2015', '#sec-array.prototype.values', 'Array.prototype.values')}}</td> - <td>{{Spec2('ES2015')}}</td> - <td>Definición inicial.</td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-array.prototype.values', 'Array.prototype.values')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td> </td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2> - -<div>{{Compat("javascript.builtins.Array.values")}}</div> - -<h2 id="Vea_también">Vea también</h2> - -<ul> - <li>{{jsxref("Array.prototype.keys()")}}</li> - <li>{{jsxref("Array.prototype.entries()")}}</li> - <li>{{jsxref("Array.prototype.forEach()")}}</li> - <li>{{jsxref("Array.prototype.every()")}}</li> - <li>{{jsxref("Array.prototype.some()")}}</li> -</ul> |