首页 > 解决方案 > JSON 循环数组,它是一个对象的值

问题描述

我有一个{}带有一堆值的 JavaScript 对象,其中一个值是一个数组[]。转换为 JSON 后将如下所示。

{
  "header-name": "",
  "header-role": "",
  "header-phone": "",
  "header-website": "",
  "header-email": "",
  "header-location": "",
  "exp-one": "ssfsdf",
  "exp-two": "sdfsdf",
  "exp-three": "",
  "exp-four": "",
  "exp-five": "",
  "exp-six": "",
  "exp-sub": [
    "1",
    "2",
    "3",
    "4",
    "5"
  ]
}

我可以使用循环遍历 JSONvar result = $.parseJSON(data); $.each(result, function(k, v) {});

我想要做的也是循环位于对象中的那个数组,"exp-sub"比如。

$.each(result, function(k, v) {
    if (v == "exp-sub"){
        $.each(k, function(key, val) {
            //loop over array, this doesn't work though
        }
    }
});

也尝试了 for 循环,但也不起作用,任何帮助将不胜感激。

标签: javascriptjqueryjson

解决方案


实际上k是关键,即exp-sub所以你必须比较k和迭代v

var result={"header-name":"","header-role":"","header-phone":"","header-website":"","header-email":"","header-location":"","exp-one":"ssfsdf","exp-two":"sdfsdf","exp-three":"","exp-four":"","exp-five":"","exp-six":"","exp-sub":["1","2","3","4","5"]}

$.each(result, function(k, v) {
    //console.log(k, v)
    if (k == "exp-sub"){
      $.each(v, function(index, val) {
       console.log(val)
}); 
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


推荐阅读