在這里,我在 javascript 代碼中有兩個陣列
const array1 = [200, 455.23, -306.5, 9000, -642.21, -133.9, 79.97, 1300];
const array2 = [
'2019-11-18T21:31:17.178Z',
'2019-12-23T07:42:02.383Z',
'2020-01-28T09:15:04.904Z',
'2020-04-01T10:17:24.185Z',
'2022-04-08T14:11:59.604Z',
'2022-04-10T17:01:17.194Z',
'2022-04-11T23:36:17.929Z',
'2022-04-13T10:51:36.790Z',
];
array1.sort((a, b) => a - b);
在這里,我希望 array2 完全按照 array1 的排序順序進行排序。假設即使在對 array1 進行排序之后,兩個陣列中相同索引處的每個元素也必須位于相同索引處。簡而言之,我想對一個陣列進行排序。我希望另一個陣列以完全相同的順序排序。
uj5u.com熱心網友回復:
首先創建一個包含值對的物件字面量陣列。然后使用sortby鍵對該陣列進行排序。你完成了!
const array1 = [200, 455.23, -306.5, 9000, -642.21, -133.9, 79.97, 1300];
const array2 = ['2019-11-18T21:31:17.178Z','2019-12-23T07:42:02.383Z','2020-01-28T09:15:04.904Z','2020-04-01T10:17:24.185Z','2022-04-08T14:11:59.604Z','2022-04-10T17:01:17.194Z','2022-04-11T23:36:17.929Z','2022-04-13T10:51:36.790Z',];
const sorted = array1.map((a1,index)=>{return {sortBy: a1, value: array2[index]}}).sort((a,b)=>a.sortBy-b.sortBy);
console.log(sorted);
//-------------------------------------------------------
//or in a function
const sortArrayByAnother = (arr, sortBy) => {
return sortBy.map((a1,index)=>{return {sortBy: a1, value: arr[index]}}).sort((a,b)=>a.sortBy-b.sortBy).map((d)=>d.value);
}
console.log(sortArrayByAnother(array2, array1));
uj5u.com熱心網友回復:
這里有一個如何實作上述建議的示例,其中兩個值都在一個陣列中,就像物件一樣,并按陣列中每個物件的值排序。
const myArray = [
{date: '2019-11-18T21:31:17.178Z', value: 200},
{date: '2019-12-23T07:42:02.383Z', value: 455.23},
{date: '2020-01-28T09:15:04.904Z', value: -306.5},
{date: '2020-04-01T10:17:24.185Z', value: 9000},
{date: '2022-04-08T14:11:59.604Z', value: -642.21},
{date: '2022-04-10T17:01:17.194Z', value: -133.9},
{date: '2022-04-11T23:36:17.929Z', value: 79.97 },
{date: '2022-04-13T10:51:36.790Z', value: 1300},
]
myArray.sort((a, b) => a.value - b.value)
console.log(myArray);
uj5u.com熱心網友回復:
要對 2 個或多個陣列進行排序而不合并它們,請創建一個根據其中一個陣列排序的索引陣列,然后根據索引陣列重新排序陣列。
const array1 = [200, 455.23, -306.5, 9000, -642.21, -133.9, 79.97, 1300];
const array2 = [
'2019-11-18T21:31:17.178Z',
'2019-12-23T07:42:02.383Z',
'2020-01-28T09:15:04.904Z',
'2020-04-01T10:17:24.185Z',
'2022-04-08T14:11:59.604Z',
'2022-04-10T17:01:17.194Z',
'2022-04-11T23:36:17.929Z',
'2022-04-13T10:51:36.790Z',
];
// create array of sorted indexes according to array1
var index = Array.from(Array(array1.length).keys())
.sort((a, b) => array1[a] < array1[b] ? -1 : (array1[b] < array1[a]) | 0)
// reorder array1, array2, index in place according to index in O(n) time
var i;
var j;
var k;
var t1;
var t2;
for(i = 0; i < index.length; i ){
if(i != index[i]){
t1 = array1[i];
t2 = array2[i];
k = i;
while(i != (j = index[k])){
array1[k] = array1[j];
array2[k] = array2[j];
index[k] = k;
k = j;
}
array1[k] = t1;
array2[k] = t2;
index[k] = k;
}
}
console.log(array1);
console.log(array2);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/462149.html
標籤:javascript 数组 排序
上一篇:通過改變元素的值對單鏈表進行排序
