使用js数组map方法对老代码进行优化

功能描述

将途中人员列表(optlList)中的id(id1;id2;id3)显示人员的名称,显示成比如:李四,张三,王二,其中userList是已经查询出来的人员集合,

1、原JS:

function(response){
	for(var i=0; i<response.data.length; i++){
		if(response.data[i].optlList != null){
			if(response.data[i].optlList.indexOf(";") == -1){
				for(var j=0; j<userList.length; j++){
					if(userList[j].id == response.data[i].optlList){
						response.data[i].optlList = userList[j].name;
					}
				}
			}else{
				var nameList = "";
				var dataList = response.data[i].optlLst.indexOf(";");
				for(var k=0; k<dataList.length; k++){
					for(var j=0; j<userList.length; j++){
						if(userList(j).id == dataList(k)){
							nameList = userList[j].name+','+nameList;
							continue;
						}
					}
				}
				response.data[i].optlList = nameList;
			}
		}
	}
}

2、优化后js

function(response){
	return response.data.map(   //对集合进行map映射,以返回处理好后的集合
	function(item){     //此函数的参数就是map映射的集合的元素
		let nameList = [];
		if(item.optlList != null){
			nameList = item.optlList.split(";").map(   //对元素的optList按照";"进行拆分成一个新的集合,对新的集合进行map映射,映射处理后返回用户name的集合
			//对新集合map映射后的元素进行处理,其中userList.find(user => user.id == e)找到一个符合条件的元素即user,然后取出name组成name集合
			e => userList.find(user => user.id == e).name  
			);
		}
		item.optlList = nameList.toString(); //对name集合处理成以","隔开的字符串,如果想处理成其他符合隔开的字符串用join,比如nameList.join(";")用分号隔开的字符串
		return item;
	}
	)
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
翻译:写一个已经过大量数据优化性能后的数组map方法。 在优化性能之前,我们需要了解map方法的原理。map方法是在数组的每个元素上调用一个提供的函数,并且返回一个包含结果的新数组。为了优化性能,我们可以尝试以下方法: 1.避免多次访问数组 在每个元素上调用函数是昂贵的操作。如果我们仅仅是为了获取数组中的某个属性或方法,那么我们可以将其存储在一个变量中,并在后续的操作中重复使用。这样可以大大减少访问数组的次数。 ``` const arr = [1,2,3,4,5]; // 普通写法 const mappedArr = arr.map(num => { return num * 2; }); // 优化写法 const multiplyByTwo = num => num * 2; const mappedArr = arr.map(multiplyByTwo); ``` 2.避免创建不必要的新数组 创建新数组也是昂贵的操作。在map方法中,我们创建了一个新数组来存储每个元素计算后的结果。如果我们已经有了一个数组,我们可以尝试在原地修改它,而不是创建一个新数组。 ``` // 普通写法 const mappedArr = arr.map(num => { return num * 2; }); // 优化写法 for (let i = 0; i < arr.length; i++) { arr[i] = arr[i] * 2; } ``` 3.使用并发处理 并发处理可以同时处理多个任务,从而加速整个过程。在JavaScript中,我们可以利用Web Workers进行并发处理。Web Workers是一个独立的JavaScript线程,不会影响主线程的性能。 ``` const arr = [1,2,3,4,5]; const worker = new Worker('worker.js'); const messageHandler = event => { console.log(event.data); // 关闭worker线程 worker.terminate(); } worker.postMessage(arr); worker.onmessage = messageHandler; ``` 上述优化方法可以使数组map方法的性能得到显著的提升。但是需要注意的是,在优化性能时,我们也要牢记代码的可读性和可维护性,避免过度优化导致代码难以理解和修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值