recorrer - Conversión de objeto JavaScript con teclas numéricas en matriz
recorrer objeto javascript (15)
Tengo un objeto como este que vuelve como una respuesta JSON del servidor:
{"0":"1","1":"2","2":"3","3":"4"}
Quiero convertirlo en una matriz de JavaScript como esta:
["1","2","3","4"]
¿Hay una mejor manera de hacer esto? Dondequiera que esté leyendo, las personas están usando lógica compleja usando bucles. Entonces, ¿hay métodos alternativos para hacer esto?
Aquí hay un ejemplo de cómo puede obtener una matriz de objetos y luego ordenar la matriz.
function osort(obj)
{ // map the object to an array [key, obj[key]]
return Object.keys(obj).map(function(key) { return [key, obj[key]] }).sort(
function (keya, keyb)
{ // sort(from largest to smallest)
return keyb[1] - keya[1];
}
);
}
En realidad, es muy sencillo con $.map
jQuery
var arr = $.map(obj, function(el) { return el });
y casi tan fácil sin jQuery también, convirtiendo las claves en una matriz y luego mapeando los valores con Array.map
var arr = Object.keys(obj).map(function(k) { return obj[k] });
Suponiendo que ya se haya analizado como un objeto JavaScript, y no es realmente JSON, que es un formato de cadena, en ese caso JSON.parse
sería necesario ejecutar JSON.parse
.
En ES2015 hay Object.values
para el rescate, lo que hace que esto sea muy sencillo
var arr = Object.values(obj);
Esta es la mejor solución. Creo que si.
Object.keys(obj).map(function(k){return {key: k, value: obj[k]}})
Nada difícil aquí. Haz un bucle sobre tus elementos de objeto y asígnales a la matriz
var obj = {"0":"1","1":"2","2":"3","3":"4"};
var arr = [];
for (elem in obj) {
arr.push(obj[elem]);
}
No estoy seguro de lo que me falta aquí, pero simplemente probar el siguiente código hace el trabajo. ¿Me estoy perdiendo algo aquí?
https://jsfiddle.net/vatsalpande/w3ew5bhq/
$(document).ready(function(){
var json = {
"code" :"1",
"data" : {
"0" : {"id":"1","score":"44"},
"1" : {"id":"1","score":"44"}
}
};
createUpdatedJson();
function createUpdatedJson(){
var updatedJson = json;
updatedJson.data = [updatedJson.data];
$(''#jsondata'').html(JSON.stringify(updatedJson));
console.log(JSON.stringify(updatedJson));
}
})
No hay nada como un "objeto JSON" - JSON es una notación de serialización.
Si desea transformar su objeto javascript en una matriz javascript , ya sea que escriba su propio bucle [¡que no sería tan complejo!], O confíe en el _.toArray()
underscore.js _.toArray()
:
var obj = {"0":"1","1":"2","2":"3","3":"4"};
var yourArray = _(obj).toArray();
Prueba esto:
var newArr = [];
$.each(JSONObject.results.bindings, function(i, obj) {
newArr.push([obj.value]);
});
Simplemente lo haces como
var data = {
"0": "1",
"1": "2",
"2": "3",
"3": "4"
};
var arr = [];
for (var prop in data) {
arr.push(data[prop]);
}
console.log(arr);
Suponiendo que tiene un valor como el siguiente
var obj = {"0":"1","1":"2","2":"3","3":"4"};
Luego puede convertir esto en una matriz de javascript utilizando la siguiente
var arr = [];
json = JSON.stringify(eval(''('' + obj + '')'')); //convert to json string
arr = $.parseJSON(json); //convert to javascript array
Esto también funciona para convertir json en matrices javascript de múltiples disminuciones.
Ninguno de los otros métodos en esta página parecía funcionar completamente para mí cuando se trabaja con cadenas codificadas con php json, excepto el método que menciono aquí.
Usando JavaScript sin formato, suponga que tiene:
var j = {0: "1", 1: "2", 2: "3", 3: "4"};
Podrías obtener los valores con:
Object.keys(j).map(function(_) { return j[_]; })
Salida:
["1", "2", "3", "4"]
var data = [];
data = {{ jdata|safe }}; //parse through js
var i = 0 ;
for (i=0;i<data.length;i++){
data[i] = data[i].value;
}
var JsonObj= {"0":"1","1":"2","2":"3","3":"4"};
var array = [];
for(var i in JsonObj) {
if(JsonObj.hasOwnProperty(i) && !isNaN(+i)) {
array[+i] = JsonObj[i];
}
}
var json = ''{"0":"1","1":"2","2":"3","3":"4"}'';
var parsed = JSON.parse(json);
var arr = [];
for(var x in parsed){
arr.push(parsed[x]);
}
Espero que esto es lo que buscas!
var obj = {"0":"1","1":"2","2":"3","3":"4"};
var vals = Object.values(obj);
console.log(vals); //["1", "2", "3", "4"]
Otra alternativa a la pregunta
var vals = Object.values(JSON.parse(obj)); //where json needs to be parsed
var obj= {"0":"1", "1":"2", "2":"3", "3":"4"};
var arr = [];
var keys = window.jQuery.map(obj, function(value, key) {
arr.splice(key, 0, value);
console.log(arr);
});