使用ES6方法转换JSON数组,如何将condition值设为对象外层键
数组格式转换解决方案
你的原有实现存在两处不符合需求的逻辑:
- 使用reduce将所有children配置合并为了同一个对象,目标格式要求每个字段规则单独作为一个对象放在数组内
- 将condition作为属性挂载到了合并后的对象上,正确结构要求把condition的值作为对象的键,字段规则数组作为对应的值
正确实现代码如下:
const result = this.parents.map(({ condition, children }) => { // 每个children项单独转换为目标结构的对象,组成规则数组 const ruleList = children.map(v => ({ [v.column]: { [v.comparison]: v.columnValue } })) // 返回以condition为键的对象即可 return { [condition]: ruleList } })
注:你给出的目标格式外层
{ [ ... ] }属于不合法的JS对象语法,对象必须为键值对结构,若需要外层包裹对象,可自行补充键名即可,比如const finalResult = { filterRules: result }
内容的提问来源于stack exchange,提问作者CoryE
相关产品推荐
相关产品推荐

