javascriptx
Version:
javascript 基础库扩展
39 lines (35 loc) • 1.73 kB
JavaScript
;
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结构进行map操作,返回新的tree
// func: 返回新的Item
// field: 子对象中的数组值,默认值children
// level: 遍历深度,默认从0开始
// parent: 父节点, 默认为空
var mapTree = function mapTree(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 });
newArr.push(res);
if (item[field] instanceof Array || item[field] instanceof NodeList) {
res[field] = mapTree(item[field], func, field, level + 1, item, _indexs, _parents);
}
}
}
return newArr;
};
exports.default = mapTree;