#jquery #arrays #json
#jquery #массивы #json
Вопрос:
Я получаю набор данных, используя getJSON
вот так:
var url = 'http://localhost:5000/api/items';
$.getJSON(url, function(response) {
var response2 = []
console.log(response)
});
Мой вывод на консоль выглядит следующим образом:
[{"id": 1, "price": 20, "name": "test"}, {"id": 4, "price": 30, "name": "test2"}]
Мне нужно преобразовать эти значения в массив в этом формате:
[[1, 20, "test"], [4, 30, "test2"]]
Я попробовал следующий код, но результат отличается:
$.each(response, function (key, val) {
response2.push(val)
});
console.log(response2) // output = [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
Любая помощь действительно ценится!
Ответ №1:
Чтобы сделать то, что вам требуется, вы можете использовать Object.values
для получения значений всех свойств из объекта в виде массива. Оттуда вы можете использовать map()
для создания нового массива, содержащего их все:
// AJAX response:
let response = [{"id": 1, "price": 20, "name": "test"}, {"id": 4, "price": 30, "name": "test2"}];
let response2 = response.map(Object.values);
console.log(response2);
Ответ №2:
Если вам нужно сделать это, используя array
here, есть другой способ.
Демонстрационный код :
var response = [{
"id": 1,
"price": 20,
"name": "test"
}, {
"id": 4,
"price": 30,
"name": "test2"
}]
var outerarray = [];
$.each(response, function(key, val) {
innerarray = []
innerarray.push(val.id, val.price, val.name) //push value
outerarray.push(innerarray)
});
console.log(outerarray)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Комментарии:
1. Большое вам спасибо и извините за «нубовский» вопрос 🙂