我正在尝试对一个数组进行排序,但第二个数组与第一个数组保持同步。
例子:
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/