#javascript #jquery #arrays #json
#javascript #jquery #массивы #json
Вопрос:
Как я могу загрузить обычный массив из ответа JSON следующим образом:
{"project":"8","powerline":"188.396496","road":"7.876766","cost":"69885005.45"}
Для
var cars = [8, 188.396496, 7.876766, 69885005.45];
Я уже пробовал что-то подобное:
req.done(function(data) {
var cars = JSON.parse(data);
});
но он не выполняет свою работу.
Комментарии:
1. Привет, камеш, это объект jquery json
2. Я полагаю, что OP забыл добавить node.js в качестве тега
Ответ №1:
Вы можете просто запустить for..in
цикл, подобный этому. и продолжайте помещать значения в новый массив.
var obj = {
"project" : "8",
"powerline" : "188.396496",
"road" : "7.876766",
"cost" : "69885005.45"
}
var arr = [];
for (var key in obj) {
var val = parseFloat("0" obj[key]);
arr.push(val)
}
Комментарии:
1. Привет, раджуб, спасибо за ответ, но, как я уже упоминал, я получаю JSON из запроса Ajax, так как я могу использовать ваш подход?
2. Вы хотите извлечь array вместо JSON из ajax? тогда придется делать на стороне сервера
3. кроме того, он загружает ключи в виде строки в массив. Есть ли какой-либо способ принудительно заполнить их числами типа 8 вместо «8»
Ответ №2:
Вы можете манипулировать объектом JSON как массивом, пожалуйста, попробуйте этот способ
req.done(function(data) {
var cars = $.map(JSON.parse(data), function(value, index){
return i;
});
console.log(cars);
});
Комментарии:
1. Привет, Гириш, спасибо за ответ, но это не работает,
Ответ №3:
Это потому, что вы получаете объект при вызове JSON.parse
. Вы можете выполнить следующее, чтобы получить значения без ключей:
req.done(function (data) {
var jsonData = JSON.parse(data),
cars = []
for (var key in jsonData) {
cars.push(jsonData[key])
}
})