如何用JS或jQuery动态转换指定格式的对象数组
解决数组结构转换问题
这事儿用原生JavaScript就能轻松搞定,完全不用依赖jQuery。核心就是遍历原数组,把每个对象的键值对映射成你要的目标结构就行,直接上代码:
var A = [ { "111": ["A", "B", "C"] }, { "222": ["D", "E", "F"] } ]; var AA = A.map(item => { // 取出当前对象里唯一的键和对应的值数组 const [key, values] = Object.entries(item)[0]; return { text: key, state: "open", children: values.map(val => ({ text: val })) }; }); console.log(AA);
代码逻辑拆解:
- 用
Array.map()遍历原数组A的每一项,对每个对象做结构转换; Object.entries(item)[0]专门针对你原数组里「每个元素只有单个键值对」的情况,直接取出键和对应的数组值;- 对值数组再用一次
map(),把每个元素转成{ text: 元素值 }的格式,作为children的内容; - 固定
state为"open",把原对象的键赋值给text属性,最后组合成目标结构的对象。
如果后续原数组里的对象可能出现多个键(虽然你当前例子里没有),只需要把内部逻辑改成遍历所有键值对即可,不过按你现在的需求,上面的代码完全够用。
内容的提问来源于stack exchange,提问作者RamRavi
相关产品推荐
相关产品推荐

