将JSON对象转换成Javascript数组
我有一个这样的JSON对象作为服务器响应回来:
{"0":"1","1":"2","2":"3","3":"4"}
我想要将其转换为JavaScript数组,如:
["1","2","3","4"]
有没有最好的方法来做到这一点? 无论我在读什么,人们都在使用循环使用复杂的逻辑。 那么有没有其他的方法来做到这一点?
实际上,jQuery的$.map
非常简单
var arr = $.map(obj, function(el) { return el });
小提琴
和没有jQuery一样简单,将键转换为数组,然后用Array.map
映射返回值
var arr = Object.keys(obj).map(function(k) { return obj[k] });
小提琴
这是假设它已经被parsing为一个JavaScript对象,而实际上并不是JSON,这是一种string格式,在这种情况下,通过JSON.parse
运行也是必要的。
在ES2015中有Object.values
的救援,这使得这很轻松
var arr = Object.values(obj);
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]); }
希望这是你以后的!
没有什么像“JSON对象” – JSON是一个序列化符号。
如果你想把你的JavaScript对象转换成一个javascript数组 ,你可以编写你自己的循环(这不会那么复杂!),或者你依赖于underscore.js _.toArray()
方法:
var obj = {"0":"1","1":"2","2":"3","3":"4"}; var yourArray = _(obj).toArray();
你只是这样做
var data = { "0": "1", "1": "2", "2": "3", "3": "4" }; var arr = []; for (var prop in data) { arr.push(data[prop]); } console.log(arr);
DEMO
这里没什么难的。 循环你的对象元素并将它们分配给数组
var obj = {"0":"1","1":"2","2":"3","3":"4"}; var arr = []; for (elem in obj) { arr.push(obj[elem]); }
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]; } }
DEMO
尝试这个:
var newArr = []; $.each(JSONObject.results.bindings, function(i, obj) { newArr.push([obj.value]); });
使用原始的JavaScript,假设你有:
var j = {0: "1", 1: "2", 2: "3", 3: "4"};
你可以得到的价值:
Object.keys(j).map(function(_) { return j[_]; })
输出:
["1", "2", "3", "4"]
不知道我在这里失踪,只是简单地尝试下面的代码做的工作。 我在这里错过了什么?
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)); } })
假设你有一个像下面这样的值
var obj = {"0":"1","1":"2","2":"3","3":"4"};
然后你可以把它变成一个JavaScript数组使用以下
var arr = []; json = JSON.stringify(eval('(' + obj + ')')); //convert to json string arr = $.parseJSON(json); //convert to javascript array
这适用于将json转换为多个diminsional javascript数组。
除了我在这里提到的方法,使用php json编码的string处理这个页面上的其他方法似乎对我完全不起作用。
这里是一个如何获得一个对象数组然后对数组进行sorting的例子。
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]; } ); }
这是最好的解决scheme。 我想是这样。
Object.keys(obj).map(function(k){return {key: k, value: obj[k]}})
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); });