UNPKG

@nutui/nutui-react

Version:

京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序

76 lines (75 loc) 2.73 kB
var generateId = function(name) { return name.split('').reduce(function(sum, char) { return sum + char.charCodeAt(0); }, 0) // 使用字符的 Unicode 值作为 ID ; }; export var transformData = function(data) { var groupByWordCode = function(data, parentId, parentName) { return data === null || data === void 0 ? void 0 : data.reduce(function(acc, item) { var wordCode = item.wordCode; if (!acc[wordCode]) { acc[wordCode] = []; } var currentId = generateId(item.value); acc[wordCode].push({ name: item.value, wordCode: item.wordCode, id: currentId, pId: parentId, pName: parentName, children: item.children && groupByWordCode(item.children, currentId, item.text) || null }); return acc; }, {}); }; var extractTitles = function(obj) { return Object.keys(obj).map(function(key) { return { title: key, list: obj[key].map(function(item) { if (item.children) { item.children = extractTitles(item.children); } return item; }) }; }); }; var middleData = groupByWordCode(data, '', ''); var resultData = extractTitles(middleData); return resultData; }; export var findDataByName = function(data, name) { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for(var _iterator = data[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){ var item = _step.value; var _item_name; if (((_item_name = item.name) === null || _item_name === void 0 ? void 0 : _item_name.indexOf(name)) === 0) return item; if (item.children) { var found = findDataByName(item.children, name); if (found) return found; } if (item.list) { var found1 = findDataByName(item.list, name); if (found1) return found1; } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally{ try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally{ if (_didIteratorError) { throw _iteratorError; } } } return null // 如果没有找到,返回 null ; };