最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

要映射的JSON文件

IT培训 admin 6浏览 0评论

要映射的JSON文件

我有一个.json数据存储区,并希望使用Map()特定方法来获取值。这是我的.json文件的一些示例:

"program": [
    {
        "name": "program1",
        "phases": [
            {
                "name": "A",
                "cycles": [
                    {
                        "name": "day 1",
                        "exercises": [
                            {
                                "name": "workout1",
                                "set": 4,
                                "repetitions": 8
                            },
                            {
                                "name": "workout2",
                                "set": 4,
                                "repetitions": 8
                            }
                        ]
                    }
                ]
            }
        ]
    }
]

我的目标是做这样的事情:

console.log(program.get("program1").phases.get("A").name);

我有一个类似的功能,它将.json文件转换为地图

const datastore = require("./datastore.json");

function toMap(array, prop) {
    const map = new Map();
    for(const el of array) map.set(el[prop], el);
    return map;
}

var program = toMap(datastore, "name");

但这只能转换一个“地图层”,因此我只能执行一个.get(),而不能执行更深层次的toMap()

接下来,我想修改Map并将其保存回数据存储区。

回答如下:

你必须使用递归来修复你的function toMap(array, prop) { const map = new Map(); for(const el of array) { map.set(el[prop], el); for(var key in el) { if (Array.isArray(el[key])) { el[key] = toMap(el[key], prop); } } } return map; } 函数。请参阅下面的固定版本

function toMap(array, key) {
    const map = new Map();
    for(const element of array) {
        if (element[key]) {
            map.set(element[key], element);
        }
        for(var subkey in element) {
            if (Array.isArray(element[subkey])) {
                if (element[subkey][0][key]) {
                    element[subkey] = toMap(element[subkey], key);
                }
            }
        }
    }
    return map;
}

要映射的JSON文件

我有一个.json数据存储区,并希望使用Map()特定方法来获取值。这是我的.json文件的一些示例:

"program": [
    {
        "name": "program1",
        "phases": [
            {
                "name": "A",
                "cycles": [
                    {
                        "name": "day 1",
                        "exercises": [
                            {
                                "name": "workout1",
                                "set": 4,
                                "repetitions": 8
                            },
                            {
                                "name": "workout2",
                                "set": 4,
                                "repetitions": 8
                            }
                        ]
                    }
                ]
            }
        ]
    }
]

我的目标是做这样的事情:

console.log(program.get("program1").phases.get("A").name);

我有一个类似的功能,它将.json文件转换为地图

const datastore = require("./datastore.json");

function toMap(array, prop) {
    const map = new Map();
    for(const el of array) map.set(el[prop], el);
    return map;
}

var program = toMap(datastore, "name");

但这只能转换一个“地图层”,因此我只能执行一个.get(),而不能执行更深层次的toMap()

接下来,我想修改Map并将其保存回数据存储区。

回答如下:

你必须使用递归来修复你的function toMap(array, prop) { const map = new Map(); for(const el of array) { map.set(el[prop], el); for(var key in el) { if (Array.isArray(el[key])) { el[key] = toMap(el[key], prop); } } } return map; } 函数。请参阅下面的固定版本

function toMap(array, key) {
    const map = new Map();
    for(const element of array) {
        if (element[key]) {
            map.set(element[key], element);
        }
        for(var subkey in element) {
            if (Array.isArray(element[subkey])) {
                if (element[subkey][0][key]) {
                    element[subkey] = toMap(element[subkey], key);
                }
            }
        }
    }
    return map;
}

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论