繁体   English   中英

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

[英]JavaScript Sort an Array, but keep a second array in 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对你有更好的建议。 使用object / hash / associative array / map。

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

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

尝试这样的事情(未经测试):

a1.sort(function(a, b) {
    if (a > b) {

        // swap a2[0] and a2[1]
        var tmp = a2[0];
        a2[0] = a2[1];
        a2[1] = tmp;

        return 1
    } else if (a < b) {
        return -1
    } else {
        return 0
    }
});

现场演示

这样的东西,玩回归值来完美

我使用关联数组并对键进行排序。 这就是你在这里得到的。 我认为关联数组是对这个想法的更好的封装。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM