为了账号安全,请及时绑定邮箱和手机立即绑定

遍历JSON对象javascript

遍历JSON对象javascript

慕容708150 2019-11-12 15:00:47
我很难找到一种以我想要的方式遍历此JSON对象的方法。我在这里只使用Javascript。首先,这是对象{"dialog":{    "dialog_trunk_1":{        "message": "This is just a JSON Test"    },    "dialog_trunk_2":{        "message": "and a test of the second message"    },    "dialog_trunk_3":    {        "message": "This is a test of a bit longer text. Hopefully this will at the very least create 3 lines and trigger us to go on to another box. So we can test multi-box functionality, too."    }}}现在,我只是在尝试基本方法来访问此对象上的每个dialog_trunk。理想情况下,我想遍历该对象,并为每个主干显示其message值。我已经尝试过使用for循环动态地生成dialog_trunk的名称/编号,但是我无法使用对象名称的字符串来访问该对象,因此我不确定从这里开始。
查看完整描述

3 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

for..in为此使用循环。确保检查对象是否拥有属性,或者是否也显示所有继承的属性。一个例子是这样的:


var obj = {a: 1, b: 2};

for (var key in obj) {

  if (obj.hasOwnProperty(key)) {

    var val = obj[key];

    console.log(val);

  }

}

或者,如果您需要递归来遍历所有属性:


var obj = {a: 1, b: 2, c: {a: 1, b: 2}};

function walk(obj) {

  for (var key in obj) {

    if (obj.hasOwnProperty(key)) {

      var val = obj[key];

      console.log(val);

      walk(val);

    }

  }

}

walk(obj);


查看完整回答
反对 回复 2019-11-12
?
开心每一天1111

TA贡献1836条经验 获得超12个赞

这是我的递归方法:


function visit(object) {

    if (isIterable(object)) {

        forEachIn(object, function (accessor, child) {

            visit(child);

        });

    }

    else {

        var value = object;

        console.log(value);

    }

}


function forEachIn(iterable, functionRef) {

    for (var accessor in iterable) {

        functionRef(accessor, iterable[accessor]);

    }

}


function isIterable(element) {

    return isArray(element) || isObject(element);

}


function isArray(element) {

    return element.constructor == Array;

}


function isObject(element) {

    return element.constructor == Object;

}


查看完整回答
反对 回复 2019-11-12
  • 3 回答
  • 0 关注
  • 409 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信