UNPKG

javascriptx

Version:

javascript 基础库扩展

43 lines (39 loc) 1.86 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); } } // 递归对象数组 // arr: 遍历的数组 // func: 递归方法,若返回一个值则停止递归,并返回此值 // field: 子对象中的数组值,默认值children // level: 遍历深度,默认从0开始 // parent: 父节点, 默认为空 var loopItem = function loopItem(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] : []; 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) { return res; } if (item[field] instanceof Array || item[field] instanceof NodeList) { var result = loopItem(item[field], func, field, level + 1, item, _indexs, _parents); if (result) { return result; } } } } }; exports.default = loopItem;