Javascript – Reindexando una matriz

Aquí está mi ejemplo. ¿Puedes decirme cómo puedo hacer que la matriz tenga keys consecutivas?

array[0] array[1] array[2] 

cuando tengo

 var testArray = new Array(); testArray[3]="qwerty"; testArray[7]="asdfgh"; testArray[13]="zxcvbn"; var testString = testArray.join(); 

Nota del editor: el asker quiere reindexar su matriz.

6 Solutions collect form web for “Javascript – Reindexando una matriz”

Si no te importa usar javascript 1.6: (nota: este código usa la biblioteca jQUery)

 var testArray = new Array(); testArray[3]="qwerty"; testArray[7]="asdfgh"; testArray[13]="zxcvbn"; var testString = testArray.filter(function (item) { return item != undefined }).join(); $(function(){ $('#write').text(testString); }); 

prototipo de filter:

 if (!Array.prototype.filter) { Array.prototype.filter = function(fun /*, thisp */) { "use strict"; if (this === void 0 || this === null) throw new TypeError(); var t = Object(this); var len = t.length >>> 0; if (typeof fun !== "function") throw new TypeError(); var res = []; var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (i in t) { var val = t[i]; // in case fun mutates this if (fun.call(thisp, val, i, t)) res.push(val); } } return res; }; } 

Array.prototype.filter() no se ejecuta en elementos eliminados o no definidos anteriormente. Entonces puedes simplemente hacer:

 testArray.filter(function(val){return val}); 

..para volver a indexar tu matriz.

O ES6:

 testArray.filter(val => val) 
 var testArray = new Array(); testArray[3] = "qwerty"; testArray[7] = "asdfgh"; testArray[13] = "zxcvbn"; var isEmpty = function(x) { // returns true if x is null and false if it is not. if(x!=null){ return true; }else{ return false } } var newArray=testArray.filter(isEmpty); var testString2 = newArray.join(); $('#write').text(testString2); 

Súper simple function:

 function reindex_array_keys(array, start){ var temp = []; start = typeof start == 'undefined' ? 0 : start; start = typeof start != 'number' ? 0 : start; for(var i in array){ temp[start++] = array[i]; } return temp; } testArray = reindex_array_keys(testArray); 

Nota: esto eliminará cualquier key personalizada. el resultado siempre estará indexado numéricamente. podrías agregar cheques para si es una matriz o no, pero tiendo a no usar funciones que construyo aparte de las que están destinadas a ser usadas. también puede iniciar el índice más alto si lo desea:

 testArray = reindex_array_keys(testArray, 3); 

que producirá 3 elementos "indefinidos" al comienzo de la matriz. luego puede agregarlo, pero creo que sería mejor hacer testArray.unshift('newValue') primero y reindexar personalmente.

que te diviertas

quieres decir sin las comas? si es así, haz esto: var testString = testArray.join(""); o puede agregar cualquier char que desee entre.

Prueba esto

 var testArray=testArray.join(" "); 
  • Serializar objects internos de Javascript (como Rango)
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.