我从服务器获得的JSON响应中返回了这样一个对象:
{
"0": "1",
"1": "2",
"2": "3",
"3": "4"
}
我想把它转换成这样的 JavaScript 数组:
["1","2","3","4"]
有没有最佳方法来完成这个任务?我看到很多人都在使用循环的复杂逻辑。那么除了循环之外,还有其他的方法吗?
我从服务器获得的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] });
假设它已经解析为javascript对象,而不是JSON字符串格式,那么需要通过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]);
}
console.log(arr)
希望这正是你需要的内容!
您只需像这样操作:
var data = {
"0": "1",
"1": "2",
"2": "3",
"3": "4"
};
var arr = [];
for (var prop in data) {
arr.push(data[prop]);
}
console.log(arr);
没有称为“JSON对象”的东西 - JSON是一种序列化符号。
如果您想将您的javascript对象转换为javascript数组,则可以编写自己的循环[这并不那么复杂!]或依赖于underscore.js _.toArray()
方法:
var obj = {"0":"1","1":"2","2":"3","3":"4"};
var yourArray = _(obj).toArray();
这里没有什么难的。循环遍历您的对象元素并将它们分配给数组。
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];
}
}
console.log(array)
[]
作为target
来使用Object.assign()
:
const input = {
"0": "1",
"1": "2",
"2": "3",
"3": "4"
}
const output = Object.assign([], input)
console.log(output)
如果您查看填充(polyfill),Object.assign(target, ...sources)
只是将所有可枚举的自有属性从 source
对象复制到目标对象。如果 target
是一个数组,则会将数字键添加到数组文字中,并返回该 target
数组对象。
var obj = {"0":"1","1":"2","2":"3","3":"4"};
var vals = Object.values(obj);
console.log(vals); //["1", "2", "3", "4"]
var vals = Object.values(JSON.parse(obj)); //where json needs to be parsed
试试这个:
var newArr = [];
$.each(JSONObject.results.bindings, function(i, obj) {
newArr.push([obj.value]);
});
我不确定我在这里缺少什么,但是只需尝试以下代码即可完成。 我有什么遗漏吗?
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));
}
})