Gre*_*sin 2 javascript natural-sort filelist
我有一个包含 1000 多个图像文件的文件列表对象。我希望对象按文件名(字母数字)排序。换句话说,我想做一个自然排序。文件名是这样的:
d_1_ct.png
d_2_ct.png
d_3_ct.png
d_4_ct.png
Run Code Online (Sandbox Code Playgroud)
[].slice.call(filelist_object)通过执行orArray.from(filelist_object)然后调用将文件列表对象转换为数组,sort()结果仅按字母顺序排序。如何使文件列表对象自然地按文件名排序?
只要我能够在数组元素上显示图像文件,我就可以将其转换为URL.createObjectURL()数组。
尽管文件列表对象中的文件名是字母数字字符串,但自然排序的字母数字字符串不是我想要的。文件列表对象包含以下属性:
0: File
lastModified: 1493435514308
lastModifiedDate: Sat Apr 29 2017 08:41:54 GMT+0530 (India Standard Time)
name: "d_1_ct.png"
size: 5307
type: "image/png"
webkitRelativePath: "img/d_1_ct.png"
__proto__:File
Run Code Online (Sandbox Code Playgroud)
我想对name或进行排序webkitRelativePath,同时保留文件列表对象的所有属性,因为我使用对象的索引号来显示图像。
我首先使用将文件列表对象转换为数组Array.from()。
myArray = Array.from(myFileListObject);
Run Code Online (Sandbox Code Playgroud)
然后,我使用了naturalCompare()Lauri Rooden 编写的函数。这是GitHub 链接。
naturalCompare()然后我在数组上调用该函数,如下所示:
myArray.sort(function(a,b) {
return String.naturalCompare(a.name, b.name)
});
Run Code Online (Sandbox Code Playgroud)
我的数组现在“自然”地正确排序了。它仍然保留文件列表对象的所有属性,因此我仍然可以URL.createObjectURL()在其内容上使用该方法来显示图像。
| 归档时间: |
|
| 查看次数: |
6176 次 |
| 最近记录: |