如何访问这种类型的财产?

时间:2018-06-11 20:29:32

标签: javascript ajax

我有Json OUTPUT,它有highest_value,我想在我的ajax中打印:

[{"first":1},{"last":1},{"other":3},{"highest_value":{"other":3}}]

如何在我的ajax中访问{"highest_value":{"other":3}

这是我的ajax代码:



<script>


          $.getJSON('/ytl/public/api/first-hour-trades', function(data) {

              $.each(data, function(firstHourTrades, element) {
                  $("#msg1").append($('<div>', {
                      text: element.first
                  }));
                  $("#msg2").append($('<div>', {
                      text: element.last
                  }));
                  $("#msg3").append($('<div>', {
                      text: element.other
                  }));
                  $("#msg4").append($('<div>', {
                      text: element.highest_value[0]
                  }));
              });
          });




    </script>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

如果data是您展示的数组,那么find就是

console.log(data
  .find((prop) => prop.hasOwnProperty("highest_value")));

这将产生{"highest_value":{"other":3}}

要获得3,请在.highest_value获取第一个value of the object

console.log(Object.values(data
  .find((prop) => prop.hasOwnProperty("highest_value"))
  .highest_value)[0]);

如果你知道它是第四个元素,那么你不需要找到它,你只需使用它来将3作为text

$("#msg4").append($('<div>', {
  text: Object.values(element.highest_value)[0]
}));

如果您不知道哪个元素具有highest_value属性或者有多少元素,您可以像这样重写代码:

$.getJSON('/ytl/public/api/first-hour-trades', function(data){
  const highest = data.splice(data.findIndex((prop) => prop.hasOwnProperty("highest_value")), 1)[0];

  data.forEach((element, index) => $(`#msg${index + 1}`).append($('<div>', {
    text: Object.values(element)[0]
  })));
  $(`#msg${data.length + 1}`).append($('<div>', {
    text: Object.values(highest.highest_value)[0]
  }));
});

数量越来越多的ID可能也没有必要,但这一切都取决于大图应该是什么样的。

答案 1 :(得分:0)

真的,如果你能重组你的回复可能是最好的:

{
    "first":1,
    "last":1,
    "other":3,
    "highest_value":{"other":3}
}

在这种情况下,您可以按如下方式访问它

element.highest_value.other

如果你真的负担不起,但你想让选择顺序不可知(如果数据结构随时间变化),你需要做类似的事情

data.forEach(function(obj){
    if(obj.highest_value !== undefined){
        console.log(object.highest_value.other);//this is the one you want
    }
});

使代码的功能版本如下所示:

$.getJSON('/ytl/public/api/first-hour-trades', function(data) {

    $.each(data, function(firstHourTrades, element) {//this loops once for each object
        if(element.first !== undefined){//we need to check if this is the object with the property "first"
            $("#msg1").append($('<div>', {
                text: element.first
            }));
        }
        if(element.last !== undefined){
            $("#msg2").append($('<div>', {
                text: element.last
            }));
        }
        if(element.other !== undefined){
            $("#msg3").append($('<div>', {
                text: element.other
            }));
        }
        if(element.highest_value !== undefined){
            $("#msg4").append($('<div>', {
                text: element.highest_value.other
            }));
        }
    });
});

虽然我真的建议重新考虑你的数据结构,因为你可以想象,随着它变得越来越复杂,它会非常混乱。