Преобразование объекта JavaScript с числовыми ключами в массив

У меня есть такой объект, возвращающийся в виде ответа JSON с сервера:

{"0":"1","1":"2","2":"3","3":"4"}

Я хочу преобразовать его в массив JavaScript следующим образом:

["1","2","3","4"]

Есть ли лучший способ сделать это? Где бы я ни читал, люди используют сложную логику, используя циклы. Так есть ли альтернативные методы для этого?

Ответ 1

На самом деле очень прямо с jQuery $.map

var arr = $.map(obj, function(el) { return el });

FIDDLE

и почти так же легко без jQuery, преобразовывая ключи в массив и затем отображая значения с помощью Array.map

var arr = Object.keys(obj).map(function(k) { return obj[k] });

FIDDLE

Предположим, что он уже анализируется как объект javascript и на самом деле не является JSON, который является строковым форматом, и в этом случае необходим прогон через JSON.parse.

В ES2015 там Object.values для спасения, что делает этот ветерок

var arr = Object.values(obj);

Ответ 2

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]);
}

Надеюсь, это то, что вам нужно!

Ответ 3

Вы просто делаете это как

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

Ответ 4

Нет ничего похожего на "объект JSON". JSON - это нотация сериализации.

Если вы хотите превратить свой javascript-объект в массив javascript, либо вы напишите свой собственный цикл [который не будет таким сложным!], либо вы полагаетесь на underscore.js _.toArray() метод:

var obj = {"0":"1","1":"2","2":"3","3":"4"};
var yourArray = _(obj).toArray();

Ответ 5

Ничего сложного здесь. Прокрутите элементы объекта и назначьте их массиву

var obj = {"0":"1","1":"2","2":"3","3":"4"};
var arr = [];
for (elem in obj) {
   arr.push(obj[elem]);
}

http://jsfiddle.net/Qq2aM/

Ответ 6

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

Ответ 7

Попробуйте следующее:

var newArr = [];
$.each(JSONObject.results.bindings, function(i, obj) {
    newArr.push([obj.value]);
});

Ответ 8

Используя raw javascript, предположим, что у вас есть:

var j = {0: "1", 1: "2", 2: "3", 3: "4"};

Вы можете получить значения с помощью:

Object.keys(j).map(function(_) { return j[_]; })

Вывод:

["1", "2", "3", "4"]

Ответ 9

Не уверен, что мне здесь не хватает, но просто попытка использования кода ниже делает работу. Я что-то пропустил здесь?

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));
  }
 })

Ответ 10

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

Ответ 11

Предполагая, что у вас есть значение, подобное следующему

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, кроме метода, который я упоминаю здесь.

Ответ 12

Вот пример того, как вы можете получить массив объектов и, затем отсортируйте массив.

  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];
      }
    );
  }

Ответ 13

Это лучшее решение. Я так думаю.

Object.keys(obj).map(function(k){return {key: k, value: obj[k]}})

Ответ 14

Вы можете конвертировать json Object в Array & Строка с использованием 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++;
}

Ответ 15

      var data = [];

      data  = {{ jdata|safe }}; //parse through js
      var i = 0 ;
      for (i=0;i<data.length;i++){
         data[i] = data[i].value;
      }

Ответ 16

Вы можете использовать Object.assign() с литералом пустого массива [] в качестве target:

const input = {
  "0": "1",
  "1": "2",
  "2": "3",
  "3": "4"
}

const output = Object.assign([], input)

console.log(output)

Ответ 17

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);
});