Ms.*_*lib 2 javascript sorting algorithm
这就是我的意思.假设我有一个像这样的对象数组
var objs = [ { foo: 5, bar: "something"},
{ foo: 4912, bar: "blah" },
{ foo: -12, bar: "hehe" } ];
Run Code Online (Sandbox Code Playgroud)
和一个定义bar值的排序的数组,比如
var arr = ["blah", "something", "hehe"]
Run Code Online (Sandbox Code Playgroud)
是否有JavaScript的得到一个版本的一个很好的方式objs来
[ { foo: 4912, bar: "blah" },
{ foo: 5, bar: "something"}
{ foo: -12, bar: "hehe" } ];
Run Code Online (Sandbox Code Playgroud)
???
我知道的最好的方式是
objs.sort(function(x,y){
var ix = arr.indexOf(x),
iy = arr.indexOf(y);
if(ix<iy) return -1;
else if(ix==iy) return 0;
else return 1;
});
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有一种更紧凑的方式.
你可以稍微重构一下sort函数:
objs.sort(function(x,y){
var ix = arr.indexOf(x),
iy = arr.indexOf(y);
return ix-iy;
});
Run Code Online (Sandbox Code Playgroud)
此外,为了获得更好的性能,您可能希望摆脱indexOf函数,并将sort数组加载到hash中:
var arr = {
"blah" :0,
"something":1,
"hehe":2};
Run Code Online (Sandbox Code Playgroud)
排序功能如下所示:
objs.sort(function(x,y){
return arr[x.bar]-arr[y.bar];
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |