Javascript对象数组排序问题

时间:2019-01-16 05:14:06

标签: javascript

我有一个对象的JavaScript数组,可以将其排序和排列为一个新的对象数组,以保留顺序。

我的对象数组。我以我想要的方式订购它们。对象的索引是0,1&2。

[{0: {name: 'Joel', age:25, id: 2}}, {1: {name: 'Sam', age: 23, id: 4}}, {2: {name: 'Tim', age:27, id: 3}}]

我想要的是使“ id”成为索引值。我想按“名称”的升序(保留上面的顺序)

[{2: {name: 'Joel', age:25, id: 2}}, {4: {name: 'Sam', age: 23, id: 4}}, {3: {name: 'Tim', age:27, id: 3}}]

我尝试使用此功能。

for (i in members) {
    member[members[i].id] = members[i];
}

但是失败了。输出是

[{}, {}, {name: "Joel", age:25, id: 2}, {name: "Tim", age:27, id: 3}, {name: "Sam", age: 23, id: 4}]

我也尝试使用forEach和sort方法。但是都失败了。

有什么方法可以用JavaScript做到这一点。

1 个答案:

答案 0 :(得分:3)

您可以在mapsort的帮助下完成此操作。

let obj = [{0: {name: 'Joel', age:25, id: 2}}, {1: {name: 'Sam', age: 23, id: 4}}, {2: {name: 'Tim', age:27, id: 3}}]


let op = obj.map((e,index)=>{
  return{
    [e[index].id] : e[index]
  }
}).sort((a,b)=> Object.keys(a) - Object.keys(b))

console.log(op)