Преобразование объекта 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);
});