UNPKG

javascriptx

Version:

javascript 基础库扩展

42 lines (37 loc) 1.89 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } // 对tree结构进行过滤,返回新的tree // func: 过滤函数,如果返回真,则不过滤,如果返回假,则过滤掉,同时子节点也过滤掉。 // field: 子对象中的数组值,默认值children // level: 遍历深度,默认从0开始 // parent: 父节点, 默认为空 var filterTree = function filterTree(arr, func) { var field = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'children'; var level = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0; var parent = arguments[4]; var indexs = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : []; var parents = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : []; var newArr = []; if (arr instanceof Array || arr instanceof NodeList) { for (var index = 0; index < arr.length; index++) { var item = arr[index]; var _indexs = [].concat(_toConsumableArray(indexs), [index]); var _parents = [].concat(_toConsumableArray(parents)); if (parent) { _parents.push(parent); } var res = func(item, index, { arr: arr, level: level, parent: parent, indexs: _indexs, parents: _parents }); if (res) { newArr.push(item); if (item[field] instanceof Array || item[field] instanceof NodeList) { item[field] = filterTree(item[field], func, field, level + 1, item, _indexs, _parents); } } } } return newArr; }; exports.default = filterTree;