js/es6 多级树形数组重组优化

js/es6 多级树形数组重组优化

数组结构为

this.data[i].col[i].col[i].data[i].rules[i]

我需要把最后rules[i]里的内容放到上面一层data[i]里

反过来,我也能把data[i]里的东西放进rules[i]里面

在这里先感谢各位大神们的解答,小弟感激不尽!


回答:

不知道这样是不是你想要的:

function crisscross(list) {

list.forEach((item, index) => {

if (item[index]) {

// 子元素内容合并至父元素

Object.assign(item, item[index])

// 父元素内容合并至子元素

Object.assign(item[index], item)

}

})

}

因为我比较好奇,rules 是一个数组,rules[i].data 也是一个数组,里面有很多个 data 元素,你是只需要将子元素 (数组) 中与父元素的索引相同的位置的元素 (data[i]) 合并至父元素中吗?


回答:

想把下一层数组展开,用 flatMap
想把下一层数组每个元素合并当前层的其他属性,用 map() + spread 运算 {...currentLevelOtherProps, ...nextLevelElement}
用解构可以拆分对象的某些属性和其他属性:const { rules, ...rest } = obj,解构可以用于参数。

组合起来就是下面这样:

// this.data[i].col[i].col[i].data[i].rules[i]

const dealLevel = this.data[i].col[i].col[i];

dealLevel.data = dealLevel.data

.flatMap(({ rules, ...rest }) => rules.map(rule => ({ ...rest, ...rule })));

以上是 js/es6 多级树形数组重组优化 的全部内容, 来源链接: utcz.com/p/936741.html

回到顶部