当前位置: 首页 > 知识库问答 >
问题:

排序对象中的javascript数组,维护键

黎腾
2023-03-14

我有一个带有两个数组的javascript对象,如图所示,

var Object = {'name': [Matt, Tom, Mike...], 'rank': [34,1,17...]};

我试图按排名1,2,3进行排序。。但保留与等级相关的名称。

Object.name[0] // tom
Object.rank[0] // tom's rank of 1.

我应该重新配置我的对象以使排序更容易吗?

我目前正在使用

 Object.rank.sort(function(a,b){return a-b});

按顺序排列,但名称不保留。

感谢大家的帮助。谢谢

共有3个答案

袁旻
2023-03-14

是的,如果names数组中的第i个对象连接到rank数组中的第i个对象,那么应该这样表示它。这意味着,你应该使用一个Person(或任何它是什么)对象,它有两个属性:namerank

// person constructor
function Person(name, rank) {
    this.name = name;
    this.rank = rank;
}

// create the object with the array
var myObject = {
    myArray: new Array()
};

// populate the array
myObject.myArray.push(new Person('Matt', 34));
myObject.myArray.push(new Person('Tom', 1));
myObject.myArray.push(new Person('Mike', 17));

// sort the Person objects according to their ranks
myObject.myArray.sort(function(a, b) {
    return b.rank - a.rank;    
});
璩浩广
2023-03-14

真实世界的对象:

 o = {name: ['Matt', 'Tom', 'Mike'], rank: [34,1,17]};

制作一个数组以获得更好的数据结构:

var arr =[]; 
o.name.forEach(function(name, i){
      arr.push({name: name, rank: o.rank[i]})
});

按级别排序:

arr.sort(function(a,b){return a.rank - b.rank});

按名称排序:

arr.sort(function(a,b){return a.name- b.name});

恢复到原始数据结构:

o = {name:[], rank:[]}
arr.forEach(function(item){
   o.name.push(item.name);
   o.rank.push(item.rank);
});
孔阎宝
2023-03-14

是的,重新配置。假设你有这个:

var people = [{name:"Matt", rank:34}, {name:"Tom", rank:1}, {name:"Mike", rank:17}];

然后你可以这样分类

people.sort(function(a, b) {
  return a.rank - b.rank;
}

编辑

既然有平行列表,只需将它们压缩在一起:

var people = [];
for (var i = 0; i < Object.name.length; i++) {
  people.push({name:Object.name[i], rank:Object.rank[i]});
}
 类似资料:
  • 未排序数组[输入]: 数组中元素的格式将始终为: 我尝试了array.sort()函数,但没有得到预期的输出。

  • 我有一个Object数组,它声明如下所示: 我需要根据每个对象的第三个元素,然后根据第二个元素对这些对象进行排序。因此我的输出将是:

  • Navicat 为维护 MongoDB 对象提供完整的解决方案。 在主窗口的导航窗格中或对象选项卡中选择对象。 右击已选择的对象。 选择“维护”,然后从弹出式菜单中选择一个维护选项。 结果显示在弹出的窗口中。 数据库 选项 描述 修复数据库 通过放弃无效或损坏的数据来重新生成数据库和索引。 集合 选项 描述 压缩集合 对集合中的所有数据和索引进行重写和碎片整理。 验证集合 通过扫描集合的数据和索引

  • Navicat 为维护 SQLite 对象提供完整的解决方案。 在主窗口的导航窗格中或对象选项卡中选择对象。 右击已选择的对象。 选择“维护”,然后从弹出式菜单中选择一个维护选项。 结果显示在弹出的窗口中。 数据库 选项 描述 分析数据库 收集有关数据库的统计数据。 真空数据库 重新生成数据库文件。它只适用于 main 数据库。 重新生成数据库索引 删除并重新生成数据库内的所有索引。 表 选项 描

  • Navicat 为维护 SQL Server 对象提供完整的解决方案。 在主窗口的导航窗格中或对象选项卡中选择对象。 右击已选择的对象。 选择“维护”,然后从弹出式菜单中选择一个维护选项。 结果显示在弹出的窗口中。 数据库 选项 描述 读写 将数据库设置为读写模式。 只读 将数据库设置为只读模式。 在线 使数据库在线。 离线 使数据库离线。 紧急 将数据库设置为紧急状态。 多个用户 将数据库设置为

  • Navicat 为维护 PostgreSQL 对象提供完整的解决方案。 在主窗口的导航窗格中或对象选项卡中选择对象。 右击已选择的对象。 选择“维护”,然后从弹出式菜单中选择一个维护选项。 结果显示在弹出的窗口中。 数据库 选项 描述 允许 用户可以连接到数据库。 不允许 没有用户可以连接到数据库。 分析数据库 收集关于数据库的统计数据。 真空数据库 垃圾收集并根据需要分析数据库。 重新生成数据库