将对象的参数转换为Node中的嵌套数组

时间:2017-10-24 16:12:21

标签: javascript node.js

我有一个看起来像这样的对象:

set

我还有一个键数组,用于跟踪let keys = ['key1', 'key2', 'key3'] 对象应该使用的键以及嵌套顺序:

set

如何根据keys中定义的层次结构将{ key1: [{ name: 'value1', key2: [{ name: 'value2', key3: [{ name: 'value3' }] }] }] } 对象转换为嵌套对象?我想要的输出看起来像这样:

set

keyslabels都可以是任意长度。

1 个答案:

答案 0 :(得分:0)

您可以减少键并返回内部对象的每一步。

var set = { key1: 'value1', key2: 'value2', key3: 'value3', key4: 'ignored', key5: 'also ignored' },
    keys = ['key1', 'key2', 'key3'],
    result = {};

keys.reduce(function (o, k) {
    var temp = { name: set[k] };
    o[k] = [temp];
    return temp;
}, result);
    
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }