记录commom.js与数据处理方法

记录commom.js与数据处理方法

JavaScript 其它杂项

详细介绍

选择排序法衍生操作数据

//	j=0,i的临界值=1
//	j=1,i的临界值=2
//	设i=kj+b
//	{
//		b=1
//		k=1
//	}
	var arr=[10,2,8,55,32,18,9,11,30,16,19,20];
	for(j = 0;j<=arr.length-2;j++){
		for(i=j+1;i<=arr.length-1;i++){
			if(arr[j]>arr[i]){
				var a = arr[j];
				arr[j]=arr[i];
				arr[i]=a;
			}
			console.log(arr.join());
		}
	}

数组去重方法:

通过ES6 set 的唯一性去重

let a = [1,2,3,1,2,2]
let b = new Set(a); 
console.log([...b])

//console.log(Array.from(b))

对象法-去重

/**
 *一维数组根据字段去重 [{name:'abc',age:12},{name:'efc',age:12},]
 * @param {array} data  去重的数组
 * @param {string} str  去重根据的字段
 * @param {boolean} bool  返回数组或对象,默认不传参返回数组。
 */
function deweight(data,str,bool){
	//避免后续操作对原数据有影响
	var list = data.slice(0);
	var opt = {};
	var arr=[];
	list.forEach(function(n){
		//判断该字段是否已作为属性
		if(opt[n[str]]){
			opt[n[str]].push(n)
		}else{
		//该字段为属性,该字段处于的obj为属性值
			opt[n[str]]=[n]
		}
	})
	for(var attr in opt){
		arr.push(attr)
	}
	if(bool){
		//有第三个参数则返回一个分类好的对象
		return opt	
	}else{
		//默认返回该字段的去重结果
		return arr
	}
}

通过选择排序法衍生每一项两两对比去重

模板法

一般用于后端没有处理数据,把全部数据返回给前端,前端自己组装需要的数据格式。 例如做二维数组、拼装散数据[{name:123,a:1},{name:123,b:2}] –>[{name:123,a:1,b:2}]

	第一层循环模板数组,var 一个默认的子项目,再写第二层循环,里面再匹配数据,改变默认子项目的值,再把子项目的值push到一个数组中...
	var temparr = []
	seriesdata0.forEach(function(n,i){
		var temp = "-";
		res.data.forEach(function (item) {
			if(item.yearmonth==n) {
				temp = item.blackjd										
			}
		})
		temparr.push(temp)
	})
	console.log(temparr)

//过滤对象中属性名包含"input"的属性值出来,用数组包着


obj={
	input0:123,
	input2:123,
	input3:123,
	name:222,
}
let temp = Object.keys(obj)
.filter(item => item.includes("input"))
.map(item => obj[item]);