一尘不染

用Javascript将Map转换为JSON对象

json

因此,我得到了以下javascript,其中包含键/值对,用于将嵌套路径映射到目录。

function createPaths(aliases, propName, path) {
    aliases.set(propName, path);
}

map = new Map();

createPaths(map, 'paths.aliases.server.entry', 'src/test');
createPaths(map, 'paths.aliases.dist.entry', 'dist/test');

现在,我要做的是根据地图中的键创建一个JSON对象。

它一定要是,

paths: {
  aliases: {
    server: {
      entry: 'src/test'
    },
    dist: {
      entry: 'dist/test'
    }
  }
}

不知道是否有开箱即用的方式来执行此操作。任何帮助表示赞赏。


阅读 2136

收藏
2020-07-27

共1个答案

一尘不染

您可以在地图和键上循环并分配值

function createPaths(aliases, propName, path) {

    aliases.set(propName, path);

}



var map = new Map(),

    object = {};



createPaths(map, 'paths.aliases.server.entry', 'src/test');

createPaths(map, 'paths.aliases.dist.entry', 'dist/test');



map.forEach((value, key) => {

    var keys = key.split('.'),

        last = keys.pop();

    keys.reduce((r, a) => r[a] = r[a] || {}, object)[last] = value;

});



console.log(object);
2020-07-27