工作常见的一些简单的js函数及相应代码

刚开始实习 如有写不正确的地方,还望见谅!

工作常见的一些简单的js函数及相应代码

1:filter() forEach() map() find()
filter()筛选数组
1>创建新数组不改变原数组
2>输出的是判断为true的数组元素形成的新数组
3>回调函数参数 item(数组元素) index(序列) arr(数组本身)
例如:
在国际物流系统中,每一条数据(item)都存在封箱标签的数据,现想要删除封箱标签为空的数据,然后打印
this.state.selectedRow.filter(x=>x.boxLabel)
表示 每条数据(x)中会筛掉boxLabel为空的情况 再返回为一个新数组

	get selectedRowsWithLabel(): BoxNoModel[] {
		return this.state.selectedRow.filter(x => x.boxLabel);
	}
//对应的组件的data
    {printBoxLabel && (
					<PrintBoxLabelContainer
						data={this.selectedRowsWithLabel}
						close={() => this.printLabel(false)}
					/>
				)}

map()更新数组
1>创建新数组,不改变原数组
2>结果是return的什么就是什么
3>回调函数参数 item(数组元素) index(序列) arr(数组本身)

forEach()
遍历数组全部元素,利用回调函数对数组进行操作,在break中无法跳出循环
不可控,不支持return操作输出,return只用于控制循环是否跳出当前循环
因此难操作成新数组,新值。
例:

var arr = [1,2,3,4,5,] ;
arr.forEach(function(item,index){
	console.log(item);
});

2:**match()test()**匹配正则表达式
match()::
用法一:
字符串内检索指定的值
var str = “Hello world!”
str.match(“world”);=>world
str.match(“worllld”);=>null
str.match(“World”);=>null

用法二:
找到一个或多个正则表达式的匹配

const label = this.props.form.getFieldValue("label");
		if (!val && (label === "" || !label.match(/^[0-9a-zA-Z-]+$/))) {
			this.props.form.resetFields(["label"]);
		}

含义:判断输入框内的值是否符合正则表达式
只要存在不匹配正则的元素在 则为null

test()方法
例如:

const label = getFieldValue("label") || "";
		const regex: RegExp = /^[0-9a-zA-Z-]+$/;
		if (!val && (label.length > 15 || !regex.test(label))) {
			resetFields(["label"]);
		}

两者方法的区别
match() : str.match(RegExp);
test() : RegExp.test(str);
注:当str为空时(null) 只能用test()方法

3:多条if-elseif 或switch语句的简化
最笨的方法:死亡代码又称小学生编程入门

if(strLength<=12){
	fontSize:"68px";
}else if(strLength>12 && strLength<=14){
	fontSize:"65px";
}else if(strLength>14 && strLength<=16){
	fontSzie:"60px";
}else if(strLength>16 && strLength<=18){
	fontSzie:"58px";
}else if(strLength>18 && strLength<=20){
	fontSize:"52px";
}else if(strLength>20 && strLength<= 22){
	fontSize:"48px"
}

第一种思路:
改成switch case语句

checkLabelLength = (labelLength: number, checkedNum: number) =>
     labelLength > checkedNum && labelLength <= checkedNum + 2;

    formatFontSize() {
     const { data } = this.props;
     const boxLabelLength = data.boxLabel.length;
     let labelFontSize = 33;
     switch (true) {
         case boxLabelLength <= 12:
             labelFontSize = 64;
             break;
         case this.checkLabelLength(boxLabelLength, 12):
             labelFontSize = 61;
             break;
         case this.checkLabelLength(boxLabelLength, 14):
             labelFontSize = 58;
             break;
         case this.checkLabelLength(boxLabelLength, 16):
             labelFontSize = 49;
             break;
         case this.checkLabelLength(boxLabelLength, 18):
             labelFontSize = 44;
             break;
         case this.checkLabelLength(boxLabelLength, 20):
             labelFontSize = 40;
             break;
         case this.checkLabelLength(boxLabelLength, 22):
             labelFontSize = 33;
             break;
     }
     return labelFontSize;
    }

第二种思路 将fontSize存储为数组

const fontSizeList = [
	{ length: 0, size: 65 },
	{ length: 12, size: 62 },
	{ length: 14, size: 59 },
	{ length: 16, size: 55 },
	{ length: 18, size: 46 },
	{ length: 20, size: 43 },
	{ length: 22, size: 35 },
	{ length: 24, size: 30 }
];

getFontSizeByLength = (labelLength: number): number => {
	const row = fontSizeList.sort((a, b) => b.length - a.length).find(x => x.length < labelLength);
		return row ? row.size : 34;
};

     <p
		style={{
			fontSize: `${this.getFontSizeByLength(pack.boxLabel.length)}` + `${"px"}`,
			letterSpacing: 1,
			height: "80px",
			fontWeight: "bolder",
		    textAlign: "center",
			marginTop: "2px"
			}}
      >
		{pack.boxLabel}
      </p>
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值