gpt4 book ai didi

javascript - 根据另一个数组的值对 JS 数组进行排序的最快方法?

转载 作者:数据小太阳 更新时间:2023-10-29 04:00:05 24 4
gpt4 key购买 nike

有一些类似的帖子在四处流传,但我找不到任何能完全解决这个特定问题的帖子......我有两个配对值数组:

var A=[0.5, 0.6, 0.5, 0.7, 0.8, 0.1]
var B=['a','b','c','d','e','f']
//note: a=0.5, b=0.6, c=0.5, d=0.7, etc

对数组进行排序以使数组 A 按数字升序排列并保持数据结构的对处理器最友好的方法是什么?我想内置 array.sort(function) 会是最快的,但我对语法没有信心。

最佳答案

有点hacky,但它有效。

var A = [0.5, 0.6, 0.5, 0.7, 0.8, 0.1];
var B = ['a', 'b', 'c', 'd', 'e', 'f'];

var all = [];

for (var i = 0; i < B.length; i++) {
all.push({ 'A': A[i], 'B': B[i] });
}

all.sort(function(a, b) {
return a.A - b.A;
});

A = [];
B = [];

for (var i = 0; i < all.length; i++) {
A.push(all[i].A);
B.push(all[i].B);
}

console.log(A, B);

jsFiddle .

输出

0.1, 0.5, 0.5, 0.6, 0.7, 0.8
["f", "a", "c", "b", "d", "e"]

基本上,我们在一个新数组中创建在 AB 之间具有明确联系的对象,然后对其进行 sort() .

然后我回去重建原来的两个数组。

更新

Már Örlygsson在评论中提出了一个很好的观点。他建议将 AB 值放在数组中,而不是生成像 {A: 0.5, B: 'a'} 这样的对象[0.5, 'a']

应该更快,但如果需要调试all 数组,它的可读性会稍差一些。我会把这个留给您,如果您遇到性能问题,请分析这两种方法并选择最快的方法。

关于javascript - 根据另一个数组的值对 JS 数组进行排序的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5427141/

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