Skip to content

Commit 1100089

Browse files
committed
优化初始化时多余的遍历
1 parent 0bdcb91 commit 1100089

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

src/search-tree.vue

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ export default {
127127
_preorder (nodes, callback) {
128128
if (!nodes.length) return null
129129
const { children } = this.defaultProps
130-
let stack = [...nodes]
130+
let stack = nodes.slice()
131131
while (stack.length) {
132132
const curr = stack.shift()
133133
if (callback(curr)) return curr
@@ -143,7 +143,7 @@ export default {
143143
_levelOrder (nodes, callback) {
144144
if (!nodes.length) return null
145145
const { children } = this.defaultProps
146-
let queue = [...nodes]
146+
let queue = nodes.slice()
147147
while (queue.length) {
148148
let len = queue.length
149149
while (len--) {
@@ -193,16 +193,16 @@ export default {
193193
let checkedNum = 0, anyOne = false
194194
arr.forEach(item => {
195195
this._initNode(item, parent)
196-
checkedNum += +item.checked
197196
item[children].length && dfs(item[children], item)
198197
item.expand && parent && (parent.expand = true)
198+
checkedNum += +item.checked
199199
if (item.indeterminate) anyOne = true
200200
})
201201
if (parent) {
202202
// 子节点是否全选 || 子节点的叶子节点全部选中
203-
parent.checked = checkedNum === arr.length || !this._levelOrder(arr, item => !item.checked)
203+
parent.checked = checkedNum === arr.length
204204
// 子节点有一个是半选 || 被选中的节点不为零并且被选中的节点不等于子节点长度 || 该节点不是全选并且子节点中任意一个被选中
205-
parent.indeterminate = anyOne || (!!checkedNum && checkedNum !== arr.length) || (!parent.checked && !!this._preorder(arr, item => item.checked))
205+
parent.indeterminate = anyOne || (!!checkedNum && checkedNum !== arr.length)
206206
}
207207
}
208208
dfs(this.sourceData)

0 commit comments

Comments
 (0)