Pie*_*ska 3 javascript arrays indexing
看下面的代码:
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)Run Code Online (Sandbox Code Playgroud)
它给了我那个数组:
["d", "c", "a", "b"]
Run Code Online (Sandbox Code Playgroud)
我想尊重索引并得到这样的结果:
["a", "b", "c", "d"]
Run Code Online (Sandbox Code Playgroud)
听起来像是一个基本问题,但我需要你的帮助。谢谢。
首先通过自定义排序函数对列表进行排序,该函数将比较索引,然后进行映射。
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)Run Code Online (Sandbox Code Playgroud)
您不需要排序和过滤。使用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);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33610 次 |
| 最近记录: |