按数组索引排序
这个问题在这里已经有了答案:
首先对列表进行排序,通过自定义排序函数来比较索引,然后映射。
var exemples = [
{
'name' : 'd',
'index' : 3
},
{
'name' : 'c',
'index' : 2
},
{
'name' : 'a',
'index' : 0
},
{
'name' : 'b',
'index' : 1
}
];
const list = exemples.sort((a,b) => a.index - b.index).map((exemple, index, array) => exemple.name)
console.log(list)
你不需要排序和过滤。 使用Array#reduce
。 在一次迭代中,您可以获得排序后的元素。 这比先排序然后过滤更有效。 这会给你O(n)解决方案。 以下面为例。
var exemples = [{
'name': 'd',
'index': 3
},
{
'name': 'c',
'index': 2
},
{
'name': 'a',
'index': 0
},
{
'name': 'b',
'index': 1
}
];
var ans = exemples.reduce(function (r,v) {
r[v.index] = v.name;
return r;
}, []);
console.log(ans);
您可以在映射之前对数组进行排序。 这里是一个例子:
var exemples = [{'name' : 'd','index' : 3},{'name' : 'c','index' : 2},{'name' : 'a','index' : 0},{'name' : 'b','index' : 1}];
const list = exemples.sort((v1, v2) => v1.index - v2.index).map((v) => v.name);
console.log(list)
链接地址: http://www.djcxy.com/p/19339.html