javascript - 在 Javascript 中对值对进行排序

标签 javascript sorting multidimensional-array associative-array indexing

我一定是漏掉了正确的术语,否则我确信我可以通过搜索找到答案……无论如何,这就是我想做的。

通过 javascript,我获得了四个我想要排序的变量(A、B、C 和 D),并且仍然跟踪变量名称(因为它是用含义信息编码的)。

示例数据:

A = 2;
B = 1;
C = 4;
D = 3;

我现在需要做的是按值顺序 (4,3,2,1) 对它们进行排序,这样我才能真正知道变量名顺序 (C,D,A,B)。

最佳答案

您可以保留一个值对对象数组,然后简单地对该数组进行排序。当然,数组的排序方法需要知道如何解释对象,但这可以通过向排序方法提供比较函数来完成。

首先声明你的对象数组:

sample_data = [
  { name: 'A', value: 2 },
  { name: 'B', value: 1 },
  { name: 'C', value: 4 },
  { name: 'D', value: 3 }
];

然后写一个比较函数:

function custom_compare (a,b) {
  // I'm assuming all values are numbers
  return a.value - b.value;
}

然后简单的排序和反转:

sample_data.sort(custom_compare).reverse();

要打印出排序后的名称,只需遍历数组即可:

for (var i=0;i<sample_data.length;i++) {
  console.log(sample_data[i].name);
}

关于javascript - 在 Javascript 中对值对进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12575778/

相关文章:

javascript - 需要帮助创建一个按钮来激活 javascript 函数

javascript - AngularJS 中依赖字段的表单验证

javascript - Protractor :使用 Promise

Python3 使用 lambda 对嵌套字典的列表进行排序

iphone - 如何使用 Core Data 维护 UITableView 中的显示顺序?

javascript - yarn 无法使用 node 12.1.0 构建 node-sass

c++ - GPU 加速排序 (~1GB) 和归并排序 (~100GB)

python - 从 4D 阵列中裁剪图像的不同部分以进行数据增强

multidimensional-array - CUDA:带有 3D 内核的嵌套 FOR 循环:如何确定线程应写入结果的位置?

android - 如何将二维数组从一个 Activity 传递到另一个 Activity ?