gpt4 book ai didi

javascript - JS : dot notation to nested object

转载 作者:行者123 更新时间:2023-11-29 20:49:45 25 4
gpt4 key购买 nike

我为这个简单的功能而苦恼。我的目标是将点符号字符串解析为嵌套对象。

这样的数组:

["image", "groups", "groups.tasks", "groups.image"]

我应该给这个吗:

[{
path: "image",
populate: []
}, {
path: "groups",
populate: [{
path: "tasks",
populate: []
}, {
path: "image",
populate: []
}]
}]

到目前为止我的代码:

let populate = [];
const query = ["image", "groups", "groups.tasks", "groups.image"];


function parse(str, arr) {


let c = str.split(".");
let p = c.shift();

console.log(c)

let entry = {
path: p,
populate: []
};


if (c.length > 0) {

console.log("Add to '%s'", p, c)
parse(c.join("."), entry.populate);

} else {

arr.push(entry);

}


}


query.forEach(function (str, index) {

parse(str, populate);

});

console.log(populate)

我得到的只是父数组,没有子数组:

[ { path: 'image', populate: [] },
{ path: 'groups', populate: [] } ]

我想在 RESTful API 中使用它,我可以在其中填充嵌套的 Mongoose 文档。填充数组然后将我传递到我的快速 route 的“.populate(...)”函数

例如:

GET/api/computer?populate=image,groups,group.tasks

嵌套对象的深度应该没有限制。

通过研究,我找到了这个遮阳篷: How transform string dot notation to nested object?但我不确定如何修改它以达到我的目标。

最佳答案

您可以通过减少拆分的路径字符串来减少数组。

var array = ["image", "groups", "groups.tasks", "groups.image"],
result = array.reduce((r, s) => {
s.split('.').reduce((a, path) => {
var object = a.find(o => o.path === path);
if (!object) {
a.push(object = { path, populate: [] });
}
return object.populate;
}, r);
return r;
}, []);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - JS : dot notation to nested object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52494745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com