在 javascript 中同时对 2 个对象数组进行排序
sort 2 array of object in same time in javascript
(已更新)。
我正在尝试同时对 2 个对象数组进行排序。
我有一个包含日期的对象数组。
firstArray = [{date: timestamp0 ...},
{date: timestamp1 ...},
{date: timestamp2 ...},
{date: timestamp3 ...},
]
我有第二个数组,其长度与包含位置 (x,y) 的第一个数组相同。
secondArray = [{x: number0 ..., y: number0},
{x: number0 ..., y: number0},
{x: number0 ..., y: number0},
{x: number0 ..., y: number0},
]
第一个数组中的每个对象都与第二个数组中的对象相关,这意味着:
firstArray[0]
与 secondArray[0]
相关,所有人都相同。
对第一个数组排序后,输出为(示例):
firstArray = [{date: timestamp3 ...},
{date: timestamp1 ...},
{date: timestamp2 ...},
{date: timestamp0 ...},
]
我想将 secondArray
排序为与 firstArray
相同,因为正如我所说,每个对象都是相关的。
如何按照与第一个数组相同的顺序对第二个数组进行排序?
排序firstArray
:
firstArray.sort(function (a, b) {
return new Date(b.date) - new Date(a.date);
});
排序前添加原始索引:
const firstArray = [
{ date: "12/12/2021" },
{ date: "12/11/2021" },
{ date: "12/13/2021" },
{ date: "12/3/2021" }];
firstArray.forEach((item, i) => item.orgIdx = i)
console.log(firstArray)
firstArray.sort((a,b)=> new Date(a.date)- new Date(b.date))
console.log(firstArray)
const secondArray = [
{ x: "number12" },
{ x: "number11" },
{ x: "number13" },
{ x: "number3" }];
const secondArrSorted = new Array(secondArray.length)
firstArray.forEach(({orgIdx},i) => secondArrSorted[i] = secondArray[orgIdx]);
console.log(secondArrSorted)
基本上采用索引,按需要排序并将值映射到新数组。
const
array1 = [], // given data
array2 = [], // given data
indices = [...array1.keys()].sort((a, b) => array1[a] - array1[b]), // or other sorting callback
sortedArray1 = indices.map(i => array1[i]),
sortedArray2 = indices.map(i => array2[i]);
console.log(sortedArray1); // sorted array1
console.log(sortedArray2); // sorted array2
(已更新)。
我正在尝试同时对 2 个对象数组进行排序。
我有一个包含日期的对象数组。
firstArray = [{date: timestamp0 ...},
{date: timestamp1 ...},
{date: timestamp2 ...},
{date: timestamp3 ...},
]
我有第二个数组,其长度与包含位置 (x,y) 的第一个数组相同。
secondArray = [{x: number0 ..., y: number0},
{x: number0 ..., y: number0},
{x: number0 ..., y: number0},
{x: number0 ..., y: number0},
]
第一个数组中的每个对象都与第二个数组中的对象相关,这意味着:
firstArray[0]
与 secondArray[0]
相关,所有人都相同。
对第一个数组排序后,输出为(示例):
firstArray = [{date: timestamp3 ...},
{date: timestamp1 ...},
{date: timestamp2 ...},
{date: timestamp0 ...},
]
我想将 secondArray
排序为与 firstArray
相同,因为正如我所说,每个对象都是相关的。
如何按照与第一个数组相同的顺序对第二个数组进行排序?
排序firstArray
:
firstArray.sort(function (a, b) {
return new Date(b.date) - new Date(a.date);
});
排序前添加原始索引:
const firstArray = [
{ date: "12/12/2021" },
{ date: "12/11/2021" },
{ date: "12/13/2021" },
{ date: "12/3/2021" }];
firstArray.forEach((item, i) => item.orgIdx = i)
console.log(firstArray)
firstArray.sort((a,b)=> new Date(a.date)- new Date(b.date))
console.log(firstArray)
const secondArray = [
{ x: "number12" },
{ x: "number11" },
{ x: "number13" },
{ x: "number3" }];
const secondArrSorted = new Array(secondArray.length)
firstArray.forEach(({orgIdx},i) => secondArrSorted[i] = secondArray[orgIdx]);
console.log(secondArrSorted)
基本上采用索引,按需要排序并将值映射到新数组。
const
array1 = [], // given data
array2 = [], // given data
indices = [...array1.keys()].sort((a, b) => array1[a] - array1[b]), // or other sorting callback
sortedArray1 = indices.map(i => array1[i]),
sortedArray2 = indices.map(i => array2[i]);
console.log(sortedArray1); // sorted array1
console.log(sortedArray2); // sorted array2