UNPKG

@uiw/react-native

Version:
53 lines (52 loc) 1.53 kB
export function arrayTreeFilter(data, filterFn, options) { options = options || {}; options.childrenKeyName = options.childrenKeyName || 'children'; var children = data || []; var result = []; var level = 0; do { var foundItem = children.filter(function (item) { return filterFn(item, level); })[0]; if (!foundItem) { break; } result.push(foundItem); children = foundItem[options.childrenKeyName] || []; level += 1; } while (children.length > 0); return result; } /** * 判断元素是否在数组最后一位 * @param length 数组长度 * @param i 循环下标 * @returns */ export const last = (length, i) => length - 1 === i; /**移动数据*/ export const move = (dataArray, moveIndex, toIndex) => { const { length } = dataArray; if (moveIndex < 0 || moveIndex >= length || toIndex < 0 || toIndex >= length) { return dataArray; } const item = dataArray[moveIndex]; const diff = moveIndex - toIndex; if (diff > 0) { return [ ...dataArray.slice(0, toIndex), item, ...dataArray.slice(toIndex, moveIndex), ...dataArray.slice(moveIndex + 1, length), ]; } if (diff < 0) { return [ ...dataArray.slice(0, moveIndex), ...dataArray.slice(moveIndex + 1, toIndex + 1), item, ...dataArray.slice(toIndex + 1, length), ]; } return dataArray; };