gpt4 book ai didi

javascript - 按另一个(不相关的)数组对数组进行排序

转载 作者:行者123 更新时间:2023-11-30 13:01:22 27 4
gpt4 key购买 nike

我有两个长度相同的数组。第一个数组是静态的,具有这种格式的数据 a = [['q', 10], ['s', 20], ['z', 40], ['d', 15]] 和另一个数组 b = [1, 0, 0, 1]。所以 ['q', 10]1 相关,['s', 20] - 与 0, ['z', 40]0, ['d', 15]1。然后我对第一个数组进行排序并接收,例如 a = [['d', 15], ['s', 20], ['q', 10], ['z', 40]]。那么我可以通过什么方式更改第二个数组以接收 b = [1, 0, 1, 0]

重要。无法在第一个数组中添加/更改任何数据。

最佳答案

如果你可以临时改变第一个数组,你可以这样做:

  1. 用每个元素的索引值扩充第一个数组:

    for (var i = 0; i < a.length; ++i) {
    a[i] = { value: a[i], index: i };
    }
  2. 对数组进行排序。如果您的排序功能是“比较”,那么您可以这样做:

    a.sort(function(e1, e2) {
    return compare(e1.value, e2.value);
    });
  3. 现在你可以根据索引排列新的“b”了:

    var newB = [];
    for (i = 0; i < a.length; ++i)
    newB[i] = b[a[i].index];
    b = newB;
  4. 现在恢复“a”的值:

    for (i = 0; i < a.length; ++i)
    a[i] = a[i].value;

关于javascript - 按另一个(不相关的)数组对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17346874/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com