gpt4 book ai didi

javascript - 在 JavaScript 中对数值数组和对象数组进行排序

转载 作者:行者123 更新时间:2023-11-28 14:56:01 26 4
gpt4 key购买 nike

假设我生成两个数组包含数字数组的一个:

[5.65, 3.25, 4.34, 6.78]

另一个数组保存带有一些信息的对象

[car.object1, car.object2, car.object3, car.object4]

第二个数组中的对象与第一个数组中的数字相关。因此object1 与5.65 相关,object2 与3.25 相关,依此类推。

所以我想对数组1按升序排序,同时对数组2也进行排序。

所以结果应该是:

[3.25, 4.34, 5.65, 6.78]

&

[car.object2, car.object3, car.object1, car.object4]

我的方法:(你可以忽略下面的答案,因为我认为它是错误的。它不起作用。)

var all = [];
var A = [5.65, 3.25, 4.34, 6.78];
var B = ['store.object1', 'store.object2', 'store.object3', 'store.object4'];

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);

最佳答案

您可以使用带有索引的临时数组,并使用第一个数组的值对其进行排序。然后将排序后的数组映射到 array1array2 的值。

我使用字符串作为第二个数组,而不是丢失的对象。

var array1 = [5.65, 3.25, 4.34, 6.78],
array2 = ['car.object1', 'car.object2', 'car.object3', 'car.object4'],
temp = array1.map(function (_, i) { return i; });

temp.sort(function (a, b) { return array1[a] - array1[b]; });

array1 = temp.map(function (a) { return array1[a]; });
array2 = temp.map(function (a) { return array2[a]; });

console.log(temp);
console.log(array1);
console.log(array2);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 在 JavaScript 中对数值数组和对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42877675/

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