处理联级数据

// 处理连级数据
			appenedCreateChildNode(arr, parentId) {
				let parentArr = arr.filter((a) => a.parent_id === parentId);
				if (parentArr.length === 0) {
					return;
				}
				parentArr = parentArr.map((p, index) => {
					const children = this.appenedCreateChildNode(arr, p.id);
					if (children) {
						return {
							...p,
							children,
						};
					} else {
						return {
							...p
						};
					}
				})
				return parentArr;
			},

			// 处理连级数据
			action(data) { // 使用递归函数
				if (!data || data.length <= 0) { // 递归的出口
					return null;
				}
				return data.map(x => { // 循环数据
					const model = { // 把后端返回过来的数据里面的键给替换成我想要的键
						text: x.label,
						value: x.value,
					};
					const children = this.action(x.children); // 子级数据

					if (children) { // 一直往下循环查找有没有children这个键,如果有就直接添加一个子级字段名,这个字段名就是存子级数据
						model.children = children;
					}

					return model; // 返回这个数据
				});
			},

你可能感兴趣的:(javascript)