JavaScript 排序数组,但保持第二个数组同步

标签 javascript arrays sorting sync

我正在尝试对一个数组进行排序,但第二个数组与第一个数组保持同步。

例子:

var a1 = ["human", "animal", "plant"];
var a2 = ["person", "beast", "nature"];

a1.sort();

排序后我需要数组看起来像这样:

a1 = ["animal", "human", "plant"];
a2 = ["beast", "person", "nature"];

有没有一种简单的方法可以做到这一点,也许使用自定义排序功能?

最佳答案

您可以在排序前压缩数组,并在排序后解压缩它们:

var a = ["human", "animal", "plant"],
    b = ["person", "beast", "nature"],
    zipped = [];

// zip
for (var i=0; i<a.length; i++)
{
    zipped.push({a: a[i], b: b[i]});
}

zipped.sort(function (x, y)
{
    return x.a - y.a;
});

// unzip
var z;
for (i=0; i<zipped.length; i++)
{
    z = zipped[i];
    a[i] = z.a;
    b[i] = z.b;
}

...但我认为@duffymo 为您提供了更好的建议。使用对象/哈希/关联数组/映射。

var a = [{key: 'human',  value: 'person'},
         {key: 'animal', value: 'beast'},
         {key: 'plant',  value: 'nature'}];

a.sort(function (x, y)
{
    return x.key - y.key;
});

关于JavaScript 排序数组,但保持第二个数组同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6418519/

相关文章:

javascript - 后退按钮没有带我到上一页

c - 使用 C 函数将第三个数组中的第一个和第二个数组相加

php - 在数组中查找匹配或最接近的值

Python 就地排序并行数组?

javascript - Bootstrap : animation in modal window

javascript - HTML5 视频标签在移动设备上不起作用

javascript - D3.js 是否支持 native 移动应用程序?

javascript - 通过 ID 比较 2 个不同的数组并计算差异

javascript - 使用 JavaScript while 循环将图像数组绘制到 HTML5 canvas

java - PriorityQueue 未在添加时排序