js中的那些遍歷

說到遍歷,首先想到的是數組的遍歷,方法不要太多,好比 for, forEach,map,filter,every,some等

   下面來看下,用法 首先 定義一個數組: javascript

      

    1. for循環,須要知道數組的長度,才能遍歷,java

    2. forEach循環,循環數組中每個元素並採起操做, 沒有返回值, 能夠不用知道數組長度數組

      

    3. map函數,遍歷數組每一個元素,並回調操做,須要返回值,返回值組成新的數組,原數組不變函數

      

    4. filter函數, 過濾經過條件的元素組成一個新數組, 原數組不變spa

      

    5. some函數,遍歷數組中是否有符合條件的元素,返回Boolean值3d

      

    6. every函數, 遍歷數組中是否每一個元素都符合條件, 返回Boolean值對象

      

 

固然, 除了遍歷數組以外,還有遍歷對象,經常使用方法 inblog

    

     in 不只能夠用來 遍歷對象,還能夠用來遍歷數組, 不過 i 對應與數組的 key值排序

     

介紹完遍歷,下面說一下工做中遇到的狀況,後臺傳給我一個對象數組,我須要排序再顯示,看到有介紹用 sort 排序的方法,以下ip

   

var arr1 = [
	{name: 'te', value: 5},
	{name: 'te', value: 2},
	{name: 'we', value: 3},
	{name: 'ee', value: 1},
	{name: 'ee', value: 4}
];

var by = function(type){
	return function(o,p){
        console.log(o,p);
		var a;
		var b;
		if(typeof o === 'object' && typeof p === 'object' && o && p){
			a = o[type];
			b = p[type];
			if(a === b) {
				return 0;
			}
			if(typeof a === typeof b){
			console.log(a, b);
				return a < b ? -1 : 1
			}
			return typeof a < typeof b ? -1 : 1;
		}else {
			throw('字段有誤');
		}
	}
}
console.log(arr1.sort(by('value')));

  顯示以下:

    

 

總結:

  排序應用場景不少 , 因此要弄清楚,明白,方可遊刃有餘。望小夥伴多多提意見!

 

補充:  後面發現, 後臺傳過來的數組中,每一個對象按 value 排序, value > 5的按順序排在前面,小於5排在後面

    思考後, 能夠在原來的的方法中這樣寫,將數組分紅2段,大於等於5和小於5,交換位置便可

  

var arr1 = [
	{name: 'te', value: 5},
	{name: 'te', value: 2},
	{name: 'we', value: 3},
	{name: 'ee', value: 1},
	{name: 'ee', value: 4}
];


var sortObj = function(arr, type , num){
	var by = function(type){
		return function(o,p){
			var a;
			var b;
			if(typeof o === 'object' && typeof p === 'object' && o && p){
				a = o[type];
				b = p[type];
				if(a === b) {
					return 0;
				}
				if(typeof a === typeof b){
				console.log(a, b);
					return a < b ? -1 : 1
				}
				return typeof a < typeof b ? -1 : 1;
			}else {
				throw('字段有誤');
			}
		}
	};

	var cacheArr = arr.sort(by('value'));

	//經過num 把數組分紅兩段
	var arrBf = cacheArr.filter(function(item){
		if(item.value < num){
			return item;
		}
	});
	var arrAf = cacheArr.filter(function(item){
		if(item.value >= num){
			return item;
		}
	});

	//交換位置 便可獲得
	var newArr = arrAf.concat(arrBf);
	return newArr;
};
console.log(sortObj(arr1, 'value' , 3));

  

相關文章
相關標籤/搜索