前端数据处理

随着前端技术的不断发展,前端工作需要展示的界面越来越复杂,因此数据处理的场景越来越多。话不多说,上代码。

去重
  • indexOf()
    思路:新建一个数组,便利传入数组,值不在就push到新数组
    缺点:IE8以下不支持indexOf方法。
var arr =[1,2,2,3,5,6,7,7,4,4,6];
function uniq(array){
	var temp =[];
	for(var i =0;i<array.length;i++){
		if(temp.indexOf(array[i] == -1)){
			temp.push(array[i])
		}
	}
	return temp;
}
console.log(uniq(arr))
  • 排序后相邻去除法
    思路:给传入数组排序,排序后相同值相邻,循环遍历,新数组之加入不与前一值重复的值
    缺点:会打乱原有数组的顺序
var str = [1,2,'2',2,3,4,6,8,4,9]
function uniq(array){
	array.sort()
	var temp =[array[0]]
	for(var i = 0;i<array.length<i++){
		if(array[i] !== temp[temp.length-1]){
			temp.push(array[i])
		}
	}
	return temp
}
console.log(uniq(str))
  • 数组下标法
    思路:使用indexOf,如果当前数组的第i项在当前数组中第一次出现的位置不是i,那么表示第i项是重复的,忽略掉。否则存入新数组
var arr= [1,2,'2',2,3,4,6,8,4,9]
function uniq(array){
	var temp =[]
	for(var i = 0;i<array.length;i++){
		if(temp.indexOf(array[i]) == i){
			temp.push(array[i])
		}
	}
	return temp
}
console.log(uniq(arr))
平级数组变成父子级数组

思路:新建数组;遍历数组;每条数据中的和parentId和传入的相同,就去找这个元素的子集,找打元素中parentId==item.id,层层递归。

const dataTree = [
	{id: 1, name: '总公司', parentId: 0},
	{id: 2, name:'深圳分公司', parentId: 1},
	{id: 3, name:'北京分公司', parentId: 1},
	{id: 4, name:'研发部门', parentId: 2},
	{id: 5, name:'市场部门', parentId: 2},
	{id: 6, name:'测试部门', parentId: 2},
	{id: 7, name:'财务部门', parentId: 2},
	{id: 8, name:'运维部门', parentId: 2},
	{id: 9, name:'市场部门', parentId: 3},
	{id: 10, name:'财务部门', parentId: 3},
]
function changeData(data,parentId = 0){
	let tree = []
	dataTree.map(item=>{
		if(item.parentId == parentId){
			item.children = changeData(data,item.id)
			tree.push(item)
		}
	})
	return tree
}
console.log(changeData(dataTree,0))
今天先分享到这,以后再继续分享
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值