flo-utils
Version:
62 lines (50 loc) • 2.01 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.DEFAULT_VALUE = void 0;
var _isArray = _interopRequireDefault(require("./isArray"));
var _util = require("./warn/util");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* @name getNodeByKeyValues, 获取节点
* @param {*} [collection=[]]
* @param {*} [values=[]]
* @param {string|function} [key='key'] 支持 Fn(item, valus): boolean 自定义比较
* @param {string} [key='children'] 非必须
* @description 根据`key` 匹配 `values`中的值,获取对应`node`
* @example
*
* getNodeByKeyValues([{name: 'ass'}, {name: 'a', children: [{name: 'ass', type: 'children'}]}], ['ass'], 'name');
* => [{name: 'ass'}, {name: 'ass', type: 'children'}] // 打平返回
*
*/
var DEFAULT_VALUE = [];
exports.DEFAULT_VALUE = DEFAULT_VALUE;
function getNodeByKeyValues() {
var collection = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var keyF = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'key';
var childrenKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'children';
if (!(0, _isArray.default)(collection) || !(0, _isArray.default)(values)) {
(0, _util.consoleWran)('first param and srcond param type is array');
return DEFAULT_VALUE;
}
var nodes = [];
var findNodes = function findNodes(collecs) {
collecs.forEach(function (item) {
if (typeof keyF === 'function' && keyF(item, values)) {
nodes.push(item);
} else if (item[keyF] && values.includes(item[keyF])) {
nodes.push(item);
}
if (item[childrenKey] && item[childrenKey].length) {
findNodes(item[childrenKey]);
}
});
};
findNodes(collection);
return nodes;
}
var _default = getNodeByKeyValues;
exports.default = _default;
;