如何将字符串数组转换为自定义规则的嵌套对象
字符串数组转嵌套查询对象实现方案
实现思路
- 从数组最后一个元素倒序遍历,逐层向外嵌套生成and结构
- 每一层的结构固定为
{ tags: { contains: 当前元素 }, and: 内层嵌套结果 } - 时间复杂度为O(n),空间复杂度为O(n),属于最优实现
代码实现
function transformKeys(keys) { // 空数组可根据需求自定义兜底逻辑,这里默认输入数组长度≥1 if (!keys.length) return {}; // 先初始化最内层结构 let result = { tags: { contains: keys[keys.length - 1] } }; // 从倒数第二个元素开始倒序嵌套 for (let i = keys.length - 2; i >= 0; i--) { result = { tags: { contains: keys[i] }, and: result }; } // 包裹最外层固定的and字段 return { and: result }; }
测试验证
单元素数组测试
输入:const keys = ["A"];
输出:
{ "and": { "tags": { "contains": "A" } } }
双元素数组测试
输入:const keys = ["A","B"];
输出:
{ "and": { "tags": { "contains": "A" }, "and": { "tags": { "contains": "B" } } } }
多元素数组扩展验证
输入const keys = ["A","B","C"]会自动生成三层嵌套结构,完全符合规则要求。
内容的提问来源于stack exchange,提问作者Rawan
相关产品推荐
相关产品推荐

