Mi aplicación crea un objeto JavaScript, como el siguiente:
myObj= {1:[Array-Data], 2:[Array-Data]}
Pero necesito este objeto como una matriz.
array[1]:[Array-Data]
array[2]:[Array-Data]
Así que intenté convertir este objeto en una matriz iterando a $.each
través del objeto y agregando el elemento a una matriz:
x=[]
$.each(myObj, function(i,n) {
x.push(n);});
¿Hay una mejor manera de convertir un objeto en una matriz o tal vez una función?
javascript
jquery
arrays
object
El bndr
fuente
fuente
myObj= {1:[Array-Data]
amyObj= {0:[Array-Data]
no era parte de su edición (como recuerdo bien)Respuestas:
Salida:
fuente
$.map
? Cada búsqueda que intento hacer en esto solo muestra muchos enlaces a jQuery o al método de mapa de matrices.value.key = index; return [value];
lugar dereturn [value];
Si está buscando un enfoque funcional:
Resultados en:
Lo mismo con una función de flecha ES6:
Con ES7 podrás usar
Object.values
en su lugar ( más información ):O si ya está usando Underscore / Lo-Dash:
fuente
Creo que puede usar
for in
pero verificando si la propiedad no está heredadaEDITAR: si lo desea, también puede mantener los índices de su objeto, pero debe verificar si son numéricos (y obtiene valores indefinidos para los índices faltantes:
fuente
$.map
se aplaneArray-Data
.[{1:[Array-Data], 2:[Array-Data]}]
y$.map()
tampoco parece exitoso. Parece que todos los datos de la submatriz se fusionan en una matriz.array.length
debería devolver 2 (porque existen 2 elementos), pero devuelve 67, que es el número de todos los elementos en todos ["Array-Data"].arr[+i] = myObj[i];
porque (i)for(...in...)
no garantiza que devuelva propiedades en ningún orden (ii) en el ejemplo de OP, las propiedades comienzan desde 1, no 0.Simplemente hacer
¡Eso es todo!
fuente
Si conoce el índice máximo en su objeto, puede hacer lo siguiente:
fuente
myObj.length = Object.keys(myObj).length
Dado que ES5 Object.keys () devuelve una matriz que contiene las propiedades definidas directamente en un objeto (excluyendo las propiedades definidas en la cadena del prototipo):
ES6 va un paso más allá con las funciones de flecha:
fuente
Hoy en día, hay una manera simple de hacer esto: Object.values () .
Salida:
Esto no requiere jQuery, se ha definido en ECMAScript 2017.
Es compatible con todos los navegadores modernos (olvídate de IE).
fuente
var state = { ingredient: { salad: 1, bacon: 1, } }
y luegovar HariOm = Object.values(state);
seguidoconsole.log(typeof HariOM)
, muestra el tipo como un objeto. ¿No debería mostrarlo como una matriz?Array.isArray(HariOM)
El mejor método sería usar una función solo de javascript:
fuente
var myObj = {1:[1,2,3],2:[4,5,6]};
fuente
var bbb = {'1': 'a', '3': 'b'}; var x = []; for (var i in bbb) { x[parseInt(i)] = bbb[i];} console.log(x);
ECMASCRIPT 5:
ECMASCRIPT 2015 o ES6:
fuente
Qué tal si
jQuery.makeArray(obj)
Así es como lo hice en mi aplicación.
fuente
La resolución es muy simple.
fuente
La forma ES8 es fácil :
La documentación oficial
fuente
Fiddle Demo
Extensión a respuesta de bjornd .
Referencia
Array.prototype.slice ()
Function.prototype.apply ()
Object.prototype.hasOwnProperty ()
Object.keys ()
fuente
Si desea mantener el nombre de las propiedades del objeto como valores. Ejemplo:
Utilizar
Object.keys()
,Array.map()
yObject.assign()
:Resultado:
Explicación:
Object.keys()
enumera todas las propiedades de la fuente;.map()
aplica la=>
función a cada propiedad y devuelve una matriz;Object.assign()
combina el nombre y el valor de cada propiedad.fuente
Hice una función personalizada:
fuente
Después de algunas pruebas, aquí hay un objeto general para convertir el convertidor de funciones:
Tienes el objeto:
La función:
Uso de funciones:
Usted obtiene:
Entonces puede alcanzar todas las claves y valores como:
Resultado en la consola:
Editar:
O en forma de prototipo:
Y luego usar como:
fuente
Se puede crear una función simple de hacer la conversión de
object
aarray
, algo como esto puede hacer el trabajo para usted usando javascript puro:o este:
y llame y use la función de la siguiente manera:
También en el futuro tendremos algo llamado
Object.values(obj)
, similar alObject.keys(obj)
cual devolverá todas las propiedades para usted como una matriz, pero aún no es compatible con muchos navegadores ...fuente