`
LynBazinga
  • 浏览: 11101 次
社区版块
存档分类
最新评论

javascript 排序

阅读更多

javascript的原生态的sort排序功能不够强大,项目中运用到,晚上查阅资料,与大家共享。

 

功能需求:利用JavaScript进行对象排序,例如根据用户的年龄排序展示,数据如下:

<script type="text/javascript">
         	 function Player(name,age){
         	 	this.name = name;
         	 	this.age = age;
         	 }
         	 
         	 var Lyn = new Player("Lyncc",25);
         	 var Fly = new Player("Fly",27);
         	 var Sky = new Player("Sky",29);
         	 var Miss = new Player("Miss",24);
         	 
         	 var war3Players = [Lyn,Fly,Sky,Miss];
</script>

 根据JavaScript的策略模式和js的闭包:

<script type="text/javascript">
         	 function Player(name,age){
         	 	this.name = name;
         	 	this.age = age;
         	 }
         	 
         	 var Lyn = new Player("Lyncc",25);
         	 var Fly = new Player("Fly",27);
         	 var Sky = new Player("Sky",29);
         	 var Miss = new Player("Miss",24);
         	 
         	 var war3Players = [Lyn,Fly,Sky,Miss];
         	 
         	 war3Players.sort(sortByValue("age"));
         	 for(var p in war3Players){
           	 console.info(war3Players[p].name+war3Players[p].age);
             }
             
             function sortByValue(value){
             	var realSort = function(obj1,obj2){
             		if(obj1[value]>obj2[value])return 1;
             		else if(obj1[value]==obj2[value]) return 0;
             		else return -1; 
             	};
             	return realSort;
             }
         </script>

 如果有错误,请指出~

分享到:
评论
1 楼 换个号韩国红果果 2015-06-16  

可以考虑用原生sort来做,进行适当改造即可。即使重复也无所谓。照样添加!
var war3Players = [Lyn.age,Fly.age,Sky.age,Miss.age];

var arr=[];var war3Players1 = [Lyn,Fly,Sky,Miss];  war3Players.sort().forEach(function(e){
for(var i=0;i<war3Players.length;i++){
if(e==war3Players1 [i].age)
  arr.push(war3Players1 [i]);

}

})



相关推荐

Global site tag (gtag.js) - Google Analytics