javascript - 提取值并将其打印为 JSON

标签 javascript arrays json

我需要提取 json 并打印它。起初我手动执行,但这显然不是正确的方法。当我尝试使用 forEach 循环遍历 3 个对象时,不知道下一步该做什么。我的问题是是否可以仅使用循环来显示数据?

   jsonDisplay = () => {
    let data = `{
    "name": "GI",
    "size": 10,
    "nodes": [
        {
            "name": "Mysterious",
            "size": 2,
            "nodes": [
                {
                "name": "Center",
                "size": 1,
                "nodes": [
                        {
                        "name": "Fisherman",
                        "size": 0.5,
                        "nodes": []
                        }
                    ]
                },
                {
                "name": "Dog",
                "size": 1,
                "nodes": []
                }
            ]
        },
        {
            "name": "Cat",
            "size": 4,
            "nodes": []
        }
    ]
}
`

    let json = JSON.parse(data);
  let display =  document.getElementById('json');
  let display2 = document.getElementById('jsonloop');

    console.log(json);
    json.nodes.forEach(function(element) {
        console.log(element);
     });
  display.innerHTML = `${json.name}  ${json.size}
                    <br> 
                        ${json.name} - ${json.nodes[0].name} ${json.nodes[0].size} 
                    <br>
                        ${json.name} - ${json.nodes[0].name} - ${json.nodes[0].nodes[0].name} ${json.nodes[0].nodes[0].size} 
                    <br>
                       ${json.name} - ${json.nodes[0].name} -  ${json.nodes[0].nodes[0].name} ${json.nodes[0].nodes[0].nodes[0].name} - ${json.nodes[0].nodes[0].nodes[0].size} 
                    <br>
                        ${json.name} - ${json.nodes[0].name} -  ${json.nodes[0].nodes[1].name} - ${json.nodes[0].nodes[1].size}
                    <br>
                        ${json.name} - ${json.nodes[1].name} - ${json.nodes[1].size}`; 
    }

jsonDisplay();

最佳答案

所以你想打印出每个嵌套对象的名称/大小?这是一个基本的递归函数,会有所帮助。

const data = {"name":"GI","size":10,"nodes":[{"name":"Mysterious","size":2,"nodes":[{"name":"Center","size":1,"nodes":[{"name":"Fisherman","size":0.5,"nodes":[]}]},{"name":"Dog","size":1,"nodes":[]}]},{"name":"Cat","size":4,"nodes":[]}]};

(function recursivePrint({ name, size, nodes }) {
  console.log(name, size);
  nodes.length && nodes.forEach(node => recursivePrint(node));
})(data);

关于javascript - 提取值并将其打印为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54925129/

相关文章:

php - 解码 json 响应并使用 for each 插入

c# - 为什么在 web api 中返回具有一对多关系的实体会导致错误?

javascript - 通过类名 [JavaScript] 的 PART 获取元素

javascript - 为什么在 javascript 中向数组原型(prototype)添加方法会中断 for 循环的迭代?

javascript - knockout 错误: dataToRetain is undefined

c - fgets、sscanf 和写入数组

javascript - 如何在for循环中返回一个减一的数组中的一个值

javascript - 在 Apostrophe CMS 中创建自定义图像小部件

c++ - 显示一个三维结构数组

javascript - 计算嵌套 Json 内的唯一值