Преобразование объекта JavaScript с числовыми ключами в массив
у меня есть такой объект, возвращающийся как ответ JSON с сервера:
{"0":"1","1":"2","2":"3","3":"4"}
Я хочу преобразовать его в массив JavaScript следующим образом:
["1","2","3","4"]
есть ли лучший способ сделать это? Где бы я ни читал, люди используют сложную логику, используя циклы. Так есть ли альтернативные методы для этого?
16 ответов:
это на самом деле очень прямо вперед в jQuery
$.mapvar arr = $.map(obj, function(el) { return el });и почти так же легко без jQuery, а также, преобразование ключей в массив, а затем сопоставление значений с
Array.mapvar 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]); }надеюсь, что это то, что вам нужно!
вы просто делаете это как
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 object до массив JavaScript, либо вы пишете свой собственный цикл [который не будет таким сложным!], или вы полагаетесь на подчеркивания.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]; } }
попробуйте это:
var newArr = []; $.each(JSONObject.results.bindings, function(i, obj) { newArr.push([obj.value]); });
используя raw 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 в мульти-уменьшительные массивы javascript, а также.
ни один из других методов на этой странице не работал полностью для меня при работе с PHP JSON-кодированными строками, кроме метода, который я упоминаю здесь.
вот пример того, как вы могли бы получить массив объектов и затем отсортировать массив.
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]; } ); }
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
вы можете преобразовать объект json в массив и строку с помощью PHP.
$data='{"resultList":[{"id":"1839","displayName":"Analytics","subLine":""},{"id":"1015","displayName":"Automation","subLine":""},{"id":"1084","displayName":"Aviation","subLine":""},{"id":"554","displayName":"Apparel","subLine":""},{"id":"875","displayName":"Aerospace","subLine":""},{"id":"1990","displayName":"Account Reconciliation","subLine":""},{"id":"3657","displayName":"Android","subLine":""},{"id":"1262","displayName":"Apache","subLine":""},{"id":"1440","displayName":"Acting","subLine":""},{"id":"710","displayName":"Aircraft","subLine":""},{"id":"12187","displayName":"AAC","subLine":""}, {"id":"20365","displayName":"AAT","subLine":""}, {"id":"7849","displayName":"AAP","subLine":""}, {"id":"20511","displayName":"AACR2","subLine":""}, {"id":"28585","displayName":"AASHTO","subLine":""}, {"id":"45191","displayName":"AAMS","subLine":""}]}'; $b=json_decode($data); $i=0; while($b->{'resultList'}[$i]) { print_r($b->{'resultList'}[$i]->{'displayName'}); echo "<br />"; $i++; }
var data = []; data = {{ jdata|safe }}; //parse through js var i = 0 ; for (i=0;i<data.length;i++){ data[i] = data[i].value; }
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); });
Comments