简介: 特征是编辑规则前最重要的一环,如果特征编写不规范会导致报错乃至造成规则计算错误,严重时更会导致公司的经济损失。
一、 类型分类
- String
- Number
- Boolean
- Array
- Function
- Object
二、 类型详解
- string是字符串类型
- 格式是"字符串abc123.?"
- 默认为空""
- number是数字类型
- 除数字外都不可输入,否则会报错或为NaN(不是数字)
- 默认为0
- boolean是布尔类型
- 只有true(真)和false(假)两种结果
- 默认为false
- Array是数组类型
- 格式是[1,"a"]
- 默认为[]
- 数组对应值得位置叫做下标,第一个下标为0,第二个下标为1,以此类推..
- function是函数类型
- 格式为function test(data){};
- 可以理解为讲一堆代码放到其他地方编写处理
- object是对象
- 格式为{"object":"1"}
- object中存储的为键值对,可以理解为:前为名字:后为名字对应的内容
三、 常用类型判空
- String:!function.checkNull(string)
- Number:number !== 0
- Array:array.length >= 0 (数组长度大于等于0)
- Object:object.keys(a).length !== 0 (将键值对转化为数组后判断数组长度是否不等于0)
四、 逻辑运算
- if..else
- 如果..就..反之..
- 格式:if(条件){代码块}else{代码块}
- switch case
- 使用switch中所写变量的值与每个case进行比对,相等则执行case后的代码
- 格式: switch(变量){case 条件: 代码 ;break(如此条件符合,则停止再向下比对)}
五、 集合处理的方式方法
- fliter
- 过滤一些不需要的值从而得到自己想要的值
- 例:data.fliter(item => item.age >= 0) //item代表前面的data,item是个参数,名字不做限制
- set
- set类型可以简单理解为是个json,set的特性是会将数据去重
- 声明方式: var set1 = new Set([{"data":"1"}])
- set方法
- add(value) //添加某个值,返回添加值后的set
- delete(value) //删除某个值,返回一个布尔值(true/false),表示是否删除成功
- has(value) //返回一个布尔值(true/false),表示该值是否为set内的值
- clear() //清除所有值,没有返回值
- 数组
- 声明方式: var arr = [1,2,3]
- array方法
- sort() //排序
- push() //插入
- concat() //拼接数组
- indexOf() //从前往后开始查找第一个指定元素,返回下标
- lastIndexOf() //从后往前查找第一个指定元素,返回下标
- 循环
- for 格式:for(var i=0; i<str.length; i++){代码}
- str是需要循环处理的字段名,一般为数组格式需要循环
- i可以理解为循环次数,赋值为0是为了对应str数组的下标
- i需要小于str的长度是因为如果循环超出str内元素会报错
- i++是在每次循环完成一次后i+1,以对应str数组的下标向前推进
- break 停止循环
- continue 跳出当前循环开始新循环
- forEach 格式: str.forEach(itrm => {需循环执行的代码...})
- 当前循环方式不可使用break停止循环
- forEach相较于上面for循环来说更加简便,item就可以代表当前循环的对象,进而操作对象中的值
- for 格式:for(var i=0; i<str.length; i++){代码}
六、 变量声明与各个情况特征模板
- var 变量名(必须字母开头) = 123 (义为你起的变量名的值为123,其他类型遵循格式声明变量)
for循环
var num = [1,2,3]; var count = 0; for(var i = 0; i < num.length; i++){ count++; } $.feature = count;//count返回3
上述代码用来取num数组内值的数量,当然直接用num.length取这个数组的长度也可以,这里只是为了举例,需要举一反三.
forEach循环
var num = [1,2,3]; var count = 0; num.forEach(a => { if(a === 1){ count++ } }) $.feature = count;//count返回1
上述代码是用forEach的方式来循环num数组,a参数就代表num中的每一个值,循环第一次代表1;循环第二次代表2,以此类推。在循环内使用if来判断当前参数a是否为1,为1的话count就+1;num数组中只有一个1故此count返回1;
filter过滤
var num = [1,2,3]; var str = num.filter(item => item > 2) $.feature = str//str返回3
上述代码是使用filter方法来过滤掉不需要的数据,item代表num中的每一个值,当item大于2时,将过滤后的num赋值给str(这里的str只是变量名,没有任何意义)
if判断
var num = 1; var str = "不是1" if(num === 1){ str = "是1" } $.feature = str//str返回是1
这里的代码是用来判断一个变量是否为1,如果为1的话进行其他操作
注:
- $.feature是特征中必须有的,假设需要返回name就是$.feature = name其他同理
- 每个特征只能同时返回一个值(包装为对象除外)
- 特征中引用的其他特征必须在当前特征中使用(引用特征格式:$.引用特证名)