Javascript 对象数组排序问题

标签 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 中完成此操作。

最佳答案

您可以在 map 的帮助下完成和 sort .

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)

关于Javascript 对象数组排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54210800/

相关文章:

javascript - 我如何计算各种字符的终端列宽?

javascript - 如何将数据从卡片列表中的一张卡片传递到对话框?

javascript - 为什么触发点击在 javascript 中不起作用

javascript - Jquery - if 语句中的运算符

javascript - 对原型(prototype)类使用对象字面量

javascript - 从父窗口刷新子窗口

javascript - 在 Javascript 对象数组中查找属性名称

javascript - 展开选择框时未触发 jQuery keypress/keyup/etc 事件

javascript - jquery克隆表单字段并增加id

javascript - 使用 jQuery 动态更改内容