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

我有一个像这样的对象:

let set = { key1: 'value1', key2: 'value2', key3: 'value3', key4: 'ignored', key5: 'also ignored' } 

我也有一个键的数组,意在跟踪set对象的哪些键应该使用,以及嵌套顺序:

 let keys = ['key1', 'key2', 'key3'] 

如何根据keys定义的层次将set对象转换为嵌套对象? 我所需的输出将如下所示:

 { key1: [{ name: 'value1', key2: [{ name: 'value2', key3: [{ name: 'value3' }] }] }] } 

setkeys都可以是任意长度的。

你可以减less键,并返回每一步的内部对象。

 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; }