json взять объекты из массива jquery

320
02 декабря 2017, 08:37

В jquery полный ноль, прошу прощения за возможно нелепый вопрос.

Есть такой json:

   {    "success": true,
        "data": {
            "fructs": [{
                "a": 53.8977737,
                "b": 27.5517273,
                "angle": 0,
                "mark": "Яблоко",
                "color": "Красный",
                "bbbb": 0,
                "zree": 40,
                "discount": 0,
                "multiplier": 1
            },
            {
                "a": 52.9775352,
                "b": 36.102005,
                "angle": 220,
                "test": "ccc",
                "mark": "Вишня",
                "color": "",
                "bbbb": 0,
                "zree": 60,
                "discount": 0,
                "multiplier": 1
            },
            {
                "a": 55.7416407,
                "b": 37.5990335,
                "angle": 0,
                "test": "рфффф",
                "mark": "Вишня",
                "color": "Черный",
                "bbbb": 0,
                "zree": 50,
                "discount": 0,
                "multiplier": null
            },
            {
                "a": 55.7537043,
                "b": 37.6306607,
                "angle": 0,
                "test": "фывыфвфывфы",
                "mark": "Горох",
                "color": "Белый",
                "bbbb": 0,
                "zree": 60,
                "discount": 0,
                "multiplier": null
            },
            {
                "a": 55.7456493,
                "b": 37.6358455,
                "angle": 0,
                "test": "фывфывф",
                "mark": "Арбуз",
                "color": "Красный",
                "bbbb": 0,
                "zree": 50,
                "discount": 0,
                "multiplier": null
            },
            {
                "a": 55.7794533,
                "b": 37.6291466,
                "angle": 187,
                "test": "x50",
                "mark": "Яблоко",
                "bbbbDistance": 475,
                "color": "черный",
                "bbbb": 38,
                "zree": 40,
                "discount": 0,
                "multiplier": 1
            },
            {
                "a": 55.7324982,
                "b": 37.6640549,
                "angle": 108,
                "test": "x50",
                "mark": "Яблоко",
                "bbbbDistance": 537.5,
                "color": "белый",
                "bbbb": 43,
                "zree": 40,
                "discount": 0,
                "multiplier": null
            }]
        }
    }

Делаю так:

  $.getJSON('fructs.json', function(data) { 
            $.each(data.fructs, function(a,b) {
                $.each(a, function(index, obj) {
                    console.log(a,b)
                    });
                });
            });

Мне нужно взять только значения a, b из каждого элемента массива

Получаю ошибку

Uncaught TypeError: Cannot read property 'length' of undefined

Как взять нужные значения?

Лог:

jquery-latest.js:357 Uncaught TypeError: Cannot read property 'length' of undefined
    at Function.each (jquery-latest.js:357)
    at Object.success (map.html:28)
    at fire (jquery-latest.js:3119)
    at Object.fireWith [as resolveWith] (jquery-latest.js:3231)
    at done (jquery-latest.js:9275)
    at XMLHttpRequest.callback (jquery-latest.js:9685)
Answer 1

Ну вот ваша ошибка, вы делаете $.each(a, function(index, obj) но ведь там a это просто индекс, а не вложенный объект.

Вот пример кода с вашими данными.

var data = {	"success": true, 
              "data": { 
                "fructs": [{ 
                  "a": 53.8977737, 
                  "b": 27.5517273, 
                  "angle": 0, 
                  "mark": "Яблоко", 
                  "color": "Красный", 
                  "bbbb": 0, 
                  "zree": 40, 
                  "discount": 0, 
                  "multiplier": 1 
                }, 
                { 
                  "a": 52.9775352, 
                  "b": 36.102005, 
                  "angle": 220, 
                  "test": "ccc", 
                  "mark": "Вишня", 
                  "color": "", 
                  "bbbb": 0, 
                  "zree": 60, 
                  "discount": 0, 
                  "multiplier": 1 
                }, 
                { 
                  "a": 55.7416407, 
                  "b": 37.5990335, 
                  "angle": 0, 
                  "test": "рфффф", 
                  "mark": "Вишня", 
                  "color": "Черный", 
                  "bbbb": 0, 
                  "zree": 50, 
                  "discount": 0, 
                  "multiplier": null 
                }, 
                { 
                  "a": 55.7537043, 
                  "b": 37.6306607, 
                  "angle": 0, 
                  "test": "фывыфвфывфы", 
                  "mark": "Горох", 
                  "color": "Белый", 
                  "bbbb": 0, 
                  "zree": 60, 
                  "discount": 0, 
                  "multiplier": null 
                }, 
                { 
                  "a": 55.7456493, 
                  "b": 37.6358455, 
                  "angle": 0, 
                  "test": "фывфывф", 
                  "mark": "Арбуз", 
                  "color": "Красный", 
                  "bbbb": 0, 
                  "zree": 50, 
                  "discount": 0, 
                  "multiplier": null 
                }, 
                { 
                  "a": 55.7794533, 
                  "b": 37.6291466, 
                  "angle": 187, 
                  "test": "x50", 
                  "mark": "Яблоко", 
                  "bbbbDistance": 475, 
                  "color": "черный", 
                  "bbbb": 38, 
                  "zree": 40, 
                  "discount": 0, 
                  "multiplier": 1 
                }, 
                { 
                  "a": 55.7324982, 
                  "b": 37.6640549, 
                  "angle": 108, 
                  "test": "x50", 
                  "mark": "Яблоко", 
                  "bbbbDistance": 537.5, 
                  "color": "белый", 
                  "bbbb": 43, 
                  "zree": 40, 
                  "discount": 0, 
                  "multiplier": null 
                }] 
              } 
            }; 
$(document).ready(function(){ 
  $.each(data.data.fructs, function(a,b) { 
    $.each(b, function(key, val) { 
      if(key == 'a' || key == 'b'){ 
        console.log(key,val); 
      } 
    }); 
  }); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

А вот кусок кода который можете добавить в место вашего:

$.getJSON('fructs.json', function(data) {
  $.each(data.fructs, function(a,b) {
    $.each(b, function(key, val) {
      if(key == 'a' || key == 'b'){
        console.log(key,val);
      }
    });
  });
});
READ ALSO
Помогите найти ошибку в head

Помогите найти ошибку в head

Всем привет, в общем дали проект на версткуРуководитель вечно чем то недоволен, говорит опять говнокод пишешь

296
как создать html элемент?

как создать html элемент?

Есть метод documentcreateElement, который создает html элементы

409
Удвоение внутренних ссылок на сайте

Удвоение внутренних ссылок на сайте

Есть меню на сайте, вот его код:

246