马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 OOOO 于 2022-4-8 04:14 编辑
【TC7.x|TC8.x】实用函数开源
数组转请求参数
当我们使用TC的 httpsubmit(http提交请求)和 httpsubmitex(http提交请求扩展)这两个函数的时候,不管是 post 还是 get,第三个参数 send(请求内容)处理起来不是那么的方便。
httpsubmit("post", "https://xxx.com", "name=zhangsan&token=xxxxxx", "utf-8")
其实这还好,可如果请求内容过于复杂呢?下面给出答案:
var send = array("name" = "zhangsan", "info" = array("age"= "18", "school"= "MIT"), "like" = array("basketball", "read a book", "coding"))
httpsubmit("post", "https://xxx.com", arr2param(send), "utf-8")
arr2param 函数内部会对参数值进行 url编码,第二个参数指定编码字符集,utf-8 和 gb2312,默认字符集 utf-8,第三个参数是内部递归使用,无需人工干预。
数组冒泡排序
从TC升级到5.0开始就没有了数组排序,arrSort 函数使用冒泡排序算法从小到大实现,这个函数支持一维数组和二维数组。
当第一个参数传入的是一维数组时,要求这个数组的值最好是数字,这样才可以准确对比大小进行冒泡换位,第二参数不传。
当第一个参数传入的是二维数组时,要求传第二参数 key,要求这个 key 对应的值最好是数字,这样才可以准确对比大小进行冒泡换位。如:
var arr = array()
arr[0] = array("name"= "张三", "age"= 18)
arr[1] = array("name"= "李四", "age"= 24)
arr[2] = array("name"= "王五", "age"= 16)
arrSort(arr, "age") //按age从小到大排序,无返回值,浅拷贝(引用传值)
traceprint(arr)
输出>>"array("0"=array("name"="王五","age"=16),"1"=array("name"="张三","age"=18),"2"=array("name"="李四","age"=24))"
json转数组
TC自带的是有问题的,试试下面的代码: traceprint(jsontoarray("[\"a\",\"b\",\"c\",[\"a\",\"b\"]]")) 运行结果: 输出>>"array("0"=array("0"="a"),"1"=array("0"="b"),"2"=array("0"="c"),"3"=array("0"=array("0"="a"),"1"=array("0"="b")))"
使用 json2arr 正确运行结果: traceprint(json2arr("[\"a\",\"b\",\"c\",[\"a\",\"b\"]]")) 输出>>"array("0"="a","1"="b","2"="c","3"=array("0"="a","1"="b"))"
数组转json
弥补TC缺失的这个重要函数 arr2json
|