前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript对象根据自定义属性进行排序

JavaScript对象根据自定义属性进行排序

作者头像
Jerry Wang
发布2019-05-31 10:57:00
7810
发布2019-05-31 10:57:00
举报

版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1439759

先看下需求。

我想把这很长一大段的带有markdown格式的字符串里包含的image标签的文件名和url解析出来,连同文件名中包含的序号,一起存储到一个数组中。

var input = “

” + “\n” +

” + “\n” +

”;

然后对这个数组根据序号进行排序,比如上图的image标签顺序是image3, image1和image2,但我希望排序后的顺序是image1, image2和image3.

下面是我的代码。

代码语言:javascript
复制
<html>
<script>

var input = "![image3.png](https://upload-images.jianshu.io/upload_images/2085791-4d8b2cda3a057fb6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)" + "\n" + 

"![image1.png](https://upload-images.jianshu.io/upload_images/2085791-9aa6232b1426df28.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)" + "\n" + 

"![image2.png](https://upload-images.jianshu.io/upload_images/2085791-04f2773c126194fe.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)";

var IMAGE_PATTERN = /^!\[(.*)\]\((.*)\)$/;
var IMAGE_INDEX = /^image(\d+).*$/;

function MyImage(index, name, url){
	this.index = index;
	this.name = name;
	this.url = url;
}

var imagePool = [];


function sortByIndex(v1,v2){
		if(v1.index < v2.index ){
			return -1;
		}
		else if(v1.index > v2.index ){
			return 1;
		}
		else return 0;
}


function getParsedImage(input) {

	if (input.indexOf("https://upload-images.jianshu.io") < 0 ) {
		return;
	} 
	
	var result = IMAGE_PATTERN.exec(input);
	if( result.length != 3){
		return;
	}

	var imageIndex = IMAGE_INDEX.exec(result[1]);
	console.assert(imageIndex.length === 2);
	return new MyImage(imageIndex[1], result[1], result[2]);
}
			
var raw = input.split("\n");

for( var i = 0; i < raw.length; i++){
	var each = getParsedImage(raw[i]);
	if( !!each){
		imagePool.push(each);
	}
}

imagePool.sort(sortByIndex);
debugger;

</script>
</html>

第58行传入数组原生的sort方法的参数是一个排序函数:

执行完之后,就按照我期望的MyImage对象里index属性进行排序了:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年02月02日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档