<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [com-tools](./com-tools.md)

## com-tools package

## Classes

<table><thead><tr><th>

Class


</th><th>

Description


</th></tr></thead>
<tbody><tr><td>

[Decide](./com-tools.decide.md)


</td><td>

决议 用来监听决议的值； 当 决议时，会自动回调所有注册的事件，并回传决议的值；决议之后，再进行监听，监听事件会被立即被回调，并传递决议的值；

说明： 功能类似 Promise，也可用 Promise 来更轻松地实现，但之所以不用 Promise ，是因为 Promise 的回调是异步的，但我想同步回调，即让回调在一个运行循环内完成； 与 Promise 的区别是： - then回调是在 决议时 和 决议之后 同步执行的；并会回传最新的 this.value - 简单、轻量 - 通过给 Decide 实例的 value 属性设置值 `decide.value = newValue` 自动触发决议； - 即使决议之后，你也可以更改 value 的值，但不会再触发之添加的事件监听器；


</td></tr>
</tbody></table>

## Functions

<table><thead><tr><th>

Function


</th><th>

Description


</th></tr></thead>
<tbody><tr><td>

[array\_delete(array, start, end)](./com-tools.array_delete.md)


</td><td>

delete(start, end) 根据索引删除数组的元素


</td></tr>
<tr><td>

[array\_deleteIndexs(array, indexs)](./com-tools.array_deleteindexs.md)


</td><td>

deleteIndexs(...indexs) 删除数组中指定的元素


</td></tr>
<tr><td>

[array\_deleteItems(array, items)](./com-tools.array_deleteitems.md)


</td><td>

deleteItems(...items) 删除数组中指定的元素


</td></tr>
<tr><td>

[array\_deleteUseTest(array, needDeleteTest, thisValue)](./com-tools.array_deleteusetest.md)


</td><td>

deleteUseTest(needDeleteTest) 根据测试函数批量删除数组的元素


</td></tr>
<tr><td>

[array\_filterIndexs(array, filterTest, thisValue)](./com-tools.array_filterindexs.md)


</td><td>

filterIndexs(filterTest,thisArg) 该方法创建一个新的数组，新数组中的元素是通过检查指定数组中符合条件的所有元素的索引。


</td></tr>
<tr><td>

[array\_insertItem(array, item, toIndex, equalTest)](./com-tools.array_insertitem.md)


</td><td>

insertItem(item, toIndex = 0, equalTest) 将指定元素插入到调用者数组中指定索引处，并且会删除调用者数组中与 item 相同的元素


</td></tr>
<tr><td>

[array\_insertItemList(array, itemList, toIndex, equalTest)](./com-tools.array_insertitemlist.md)


</td><td>

insertItemList(itemList, toIndex = 0, equalTest) 将指定数组itemList中的元素插入到调用者数组的指定索引处，并且会删除调用者数组中 与 itemList中元素 相同的元素


</td></tr>
<tr><td>

[array\_move(array, fromIndex, toIndex, length)](./com-tools.array_move.md)


</td><td>

move(fromIndex, toIndex, length = 1) 根据索引移动数组的元素


</td></tr>
<tr><td>

[array\_moveItemsTo(array, toIndex, items)](./com-tools.array_moveitemsto.md)


</td><td>

moveItemsTo(toIndex, ...items) 批量移动数组的指定元素


</td></tr>
<tr><td>

[array\_moveTo(array, toIndex, fromIndexs)](./com-tools.array_moveto.md)


</td><td>

moveTo(toIndex, ...fromIndexs) 根据索引批量移动数组的元素


</td></tr>
<tr><td>

[array\_moveToUseTest(array, toIndex, needMoveTest, thisValue)](./com-tools.array_movetousetest.md)


</td><td>

moveToUseTest(toIndex, needMoveTest) 根据测试函数批量移动数组的元素


</td></tr>
<tr><td>

[array\_safelyFilter(array, operation, thisValue)](./com-tools.array_safelyfilter.md)


</td><td>

array\_safelyFilter(operation, thisValue) 安全地操作并过滤所有元素；与 forEach 和 filter 的区别是： safelyFilter 能保证会遍历数组中所有已存在的元素，不会受 operation 中的行为的影响；


</td></tr>
<tr><td>

[array\_safelyOperateIndexs(array, indexList, operation, thisValue)](./com-tools.array_safelyoperateindexs.md)


</td><td>

array\_safelyOperateIndexs(indexList, operation, thisValue) 安全操作指定的索引


</td></tr>
<tr><td>

[array\_safelyOperateItems(array, itemList, operation, thisValue)](./com-tools.array_safelyoperateitems.md)


</td><td>

array\_safelyOperateItems(itemList, operation, thisValue) 安全操作指定的元素


</td></tr>
<tr><td>

[betterEval(code)](./com-tools.bettereval.md)


</td><td>

由于 eval() 有 安全 和 性能 的问题，所以封装了本函数 来 替代 eval() 本方法采用 Function 的方式 来实现 eval() 的效果；


</td></tr>
<tr><td>

[copyConstructor(fun)](./com-tools.copyconstructor.md)


</td><td>

拷贝构造函数，与 copyFunction 相比，该函数还会还原构造函数的继续链，即 prototype


</td></tr>
<tr><td>

[copyFunction(fun)](./com-tools.copyfunction.md)


</td><td>


</td></tr>
<tr><td>

[createControllablePromise(executor, statusCompletesImmediately)](./com-tools.createcontrollablepromise.md)


</td><td>

createControllablePromise(executor ?:(resolve, reject)=<!-- -->&gt;<!-- -->Void) 创建外部可控制的改变 Promise 状态 Status 的 Promise 对象；该 Promise 对象在 状态 未完成之前，会 resolve、reject、clearAdditions 三个方法，当 Promise 的状态完成时，resolve、reject、clearAdditions 这三个方法会自动被删除；其中 clearAdditions 方法是用来 清除 该实例的 resolve、reject、clearAdditions 这三个方法的；


</td></tr>
<tr><td>

[createFunctionBy(funString, name, asDefault)](./com-tools.createfunctionby.md)


</td><td>

根据函数字符串 和 函数名字 来创建函数


</td></tr>
<tr><td>

[createSingleton(fun)](./com-tools.createsingleton.md)


</td><td>

为指定的函数 fun 创建对应的 单例函数


</td></tr>
<tr><td>

[createUniqueIdentifier()](./com-tools.createuniqueidentifier.md)


</td><td>

生成唯一的标识符


</td></tr>
<tr><td>

[defineListenableProperties(obj, propsOptions)](./com-tools.definelistenableproperties.md)


</td><td>

接口1：defineListenableProperties(obj,propsOptions)


</td></tr>
<tr><td>

[defineListenableProperties(obj, propArray, options)](./com-tools.definelistenableproperties_1.md)


</td><td>


</td></tr>
<tr><td>

[defineListenableProperty(obj, prop, options)](./com-tools.definelistenableproperty.md)


</td><td>


</td></tr>
<tr><td>

[defineListenablePropertyGetter(obj, prop, getDefault, asGetter)](./com-tools.definelistenablepropertygetter.md)


</td><td>

defineListenablePropertyGetter(obj, prop, getDefault, asGetter) 定义可监听属性的 getter ； 该方法一般经常用于：一些可监听属性在被定义时，还不能定义 getDefault 选项，只能在稍后某个时刻定义 getDefault 选项，此时便可用此函数来简化重新定义 getter 的操作；


</td></tr>
<tr><td>

[defineProxyProperties(proxy, target, props, options)](./com-tools.defineproxyproperties.md)


</td><td>

接口1：defineProxyProperties(proxy,target,propArray,options)


</td></tr>
<tr><td>

[defineProxyProperties(proxy, target, propOptions)](./com-tools.defineproxyproperties_1.md)


</td><td>

批量定义代理属性

接口2：defineProxyProperties(proxy,target,propOptions)


</td></tr>
<tr><td>

[defineProxyProperty(proxy, target, prop, options)](./com-tools.defineproxyproperty.md)


</td><td>

定义代理属性； 给 对象 proxy 增加 能够代理 target 对象 的 属性 prop； 当在 访问或配置 proxy 对象上的 prop 属性时，会将操作转发到 target 对象的 prop 属性；


</td></tr>
<tr><td>

[deleteMember(target, propPath)](./com-tools.deletemember.md)


</td><td>

删除成员


</td></tr>
<tr><td>

[flatGroupTree(tree)](./com-tools.flatgrouptree.md)


</td><td>

扁平化组树


</td></tr>
<tr><td>

[getMember(target, propPath)](./com-tools.getmember.md)


</td><td>

获取成员值


</td></tr>
<tr><td>

[getMemberWithAsyncDefault(target, propPath, defaultValue)](./com-tools.getmemberwithasyncdefault.md)


</td><td>

获取成员值


</td></tr>
<tr><td>

[getMemberWithDefault(target, propPath, defaultValue)](./com-tools.getmemberwithdefault.md)


</td><td>

获取成员值


</td></tr>
<tr><td>

[getSubGroupEntries(node)](./com-tools.getsubgroupentries.md)


</td><td>

获取某个节点的所有直接子组名字 和 对应的节点


</td></tr>
<tr><td>

[getSubGroupNames(node)](./com-tools.getsubgroupnames.md)


</td><td>

获取组树某个节点的子组名字


</td></tr>
<tr><td>

[getSubGroupNodes(node)](./com-tools.getsubgroupnodes.md)


</td><td>

获取某个节点的所有直接子组节点


</td></tr>
<tr><td>

[groupTreeBy(members, getGroupPath)](./com-tools.grouptreeby.md)


</td><td>

根据 getGroupPath 提示的多层级分组信息，将 members 整理成 树状的分组层级结构


</td></tr>
<tr><td>

[hasSubGroups(node)](./com-tools.hassubgroups.md)


</td><td>

判断组节点是否包含子组


</td></tr>
<tr><td>

[includesPatterns(str, includes)](./com-tools.includespatterns.md)


</td><td>

判断 includes 中是否存匹配 str 的模式


</td></tr>
<tr><td>

[includesRegExps(str, includes)](./com-tools.includesregexps.md)


</td><td>

判断 includes 中是否存匹配 str 的正则


</td></tr>
<tr><td>

[includesStrings(str, includes)](./com-tools.includesstrings.md)


</td><td>

判断 includes 中是否存在 str 包含的字符串


</td></tr>
<tr><td>

[isEqualByJSON(value1, value2)](./com-tools.isequalbyjson.md)


</td><td>

通过把值转换成JSON字符来判断是否相等


</td></tr>
<tr><td>

[isGroupTree(target)](./com-tools.isgrouptree.md)


</td><td>

判断 目标是否不是 GroupTree


</td></tr>
<tr><td>

[moveItemInArray(arr, from, to)](./com-tools.moveiteminarray.md)


</td><td>

移动数组的元素，会改变原数组


</td></tr>
<tr><td>

[moveItemInNewArray(arr, from, to)](./com-tools.moveiteminnewarray.md)


</td><td>

移动数组的元素，不改变原数组


</td></tr>
<tr><td>

[moveItemsInArray(arr, froms, tos)](./com-tools.moveitemsinarray.md)


</td><td>

批量移动数组的元素，会改变原数组


</td></tr>
<tr><td>

[moveItemsInNewArray(arr, froms, tos)](./com-tools.moveitemsinnewarray.md)


</td><td>

在新数组中批量移动数组的元素，不会改变原数组


</td></tr>
<tr><td>

[multipleLoop(mLoopOpts)](./com-tools.multipleloop.md)


</td><td>

multipleLoop(option)=<!-- -->&gt; stopLoop() 多次遍历、分批循环；可以把一个大遍历分成若干个小遍历来完成；


</td></tr>
<tr><td>

[omitMembers(obj, keys)](./com-tools.omitmembers.md)


</td><td>

剔除根级成员，删除根级成员


</td></tr>
<tr><td>

[omitMembersByPath(obj, propPaths)](./com-tools.omitmembersbypath.md)


</td><td>

通过属性路径剔除成员，删除成员


</td></tr>
<tr><td>

[pathString(path, separator, placeholder)](./com-tools.pathstring.md)


</td><td>

将路径数组转成路径字符串


</td></tr>
<tr><td>

[pickMembers(obj, keys)](./com-tools.pickmembers.md)


</td><td>

提取根级成员


</td></tr>
<tr><td>

[pickMembersByPath(obj, propPaths)](./com-tools.pickmembersbypath.md)


</td><td>

通过属性路径提取成员


</td></tr>
<tr><td>

[removeNull(obj)](./com-tools.removenull.md)


</td><td>

移除根级 undefined 和 null 属性


</td></tr>
<tr><td>

[removeUndefined(obj)](./com-tools.removeundefined.md)


</td><td>

移除根级 undefined 属性


</td></tr>
<tr><td>

[safelyIterate(iterable, operation, thisValue)](./com-tools.safelyiterate.md)


</td><td>

safelyIterate(iterable,operation, thisValue) 对 iterable 进行安全的迭代；与 for...of 的区别是：safelyIterate 能保证会迭代过程不会受 operation 中的行为的影响从而迭代每一个元素；


</td></tr>
<tr><td>

[setMember(target, propPath, value)](./com-tools.setmember.md)


</td><td>

设置成员值


</td></tr>
<tr><td>

[toJSONArrayFragment(items, space)](./com-tools.tojsonarrayfragment.md)


</td><td>

将可迭代的对象转成 JSON 数组片断


</td></tr>
<tr><td>

[toJSONItemFragment(item, space, itemSeparator)](./com-tools.tojsonitemfragment.md)


</td><td>

将 项目转成 JSON 的数组中的 item 片断


</td></tr>
</tbody></table>

## Type Aliases

<table><thead><tr><th>

Type Alias


</th><th>

Description


</th></tr></thead>
<tbody><tr><td>

[ArrayCallbackFun](./com-tools.arraycallbackfun.md)


</td><td>


</td></tr>
<tr><td>

[GetDefaultValue](./com-tools.getdefaultvalue.md)


</td><td>

获得默认值


</td></tr>
<tr><td>

[GetGroupPath](./com-tools.getgrouppath.md)


</td><td>

获取分组路径


</td></tr>
<tr><td>

[GroupTree](./com-tools.grouptree.md)


</td><td>

分组树


</td></tr>
<tr><td>

[ListenablePropOpts](./com-tools.listenablepropopts.md)


</td><td>

定义可监听的属性


</td></tr>
<tr><td>

[ProxyOptions](./com-tools.proxyoptions.md)


</td><td>


</td></tr>
<tr><td>

[TestFun](./com-tools.testfun.md)


</td><td>


</td></tr>
</tbody></table>
