Sort by index an array
本问题已经有最佳答案,请猛点这里访问。
请看下面的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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) |
它给了我数组:
1 | ["d","c","a","b"] |
我希望尊重索引并得到这样的结果:
1 | ["a","b","c","d"] |
听起来是个基本问题,但我需要你的帮助。谢谢。
首先,通过一个将比较索引的自定义排序函数对列表进行排序,然后进行映射。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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); |
可以在映射数组之前对其进行排序。下面是一个例子:
1 2 3 4 | 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) |