请看下面的代码:
var exemples = [
{
'name' : 'd',
'index' : 3
},
{
'name' : 'c',
'index' : 2
},
{
'name' : 'a',
'index' : 0
},
{
'name' : 'b',
'index' : 1
}
];
const list = exemples.map((exemple, index, array) => exemple.name)
console.log(list)

它给了我那个数组:
["d", "c", "a", "b"]
我想尊重索引并得到这样的结果:
["a", "b", "c", "d"]
听起来像一个基本问题,但我需要你的帮助。感谢。
答案 0 :(得分:4)
首先按照自定义排序函数对列表进行排序,该函数将比较索引,然后映射。
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)
答案 1 :(得分:2)
您无需排序和过滤。
使用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);
答案 2 :(得分:1)
您可以在映射之前对数组进行排序。 这是一个例子:
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)