您可以使用Array的sort()方法和自定义的比较函数来按照另一个数组对数组进行排序。
以下是一个示例代码:
// 原始数组
const arr1 = [3, 1, 4, 2];
// 参照数组
const arr2 = [4, 2, 1, 3];
// 自定义比较函数
function customSort(a, b) {
const indexA = arr2.indexOf(a);
const indexB = arr2.indexOf(b);
// 如果a和b都在arr2中出现,则按照arr2中的顺序排序
if (indexA !== -1 && indexB !== -1) {
return indexA - indexB;
}
// 如果只有a在arr2中出现,则将a排在b的前面
if (indexA !== -1) {
return -1;
}
// 如果只有b在arr2中出现,则将b排在a的前面
if (indexB !== -1) {
return 1;
}
// 如果a和b都不在arr2中出现,则按照它们在原始数组中的顺序排序
return arr1.indexOf(a) - arr1.indexOf(b);
}
// 使用自定义比较函数进行排序
const sortedArr = arr1.sort(customSort);
console.log(sortedArr); // 输出 [4, 2, 1, 3]
在这个示例中,我们定义了一个自定义的比较函数customSort
,它首先检查要比较的两个元素是否都在arr2
中出现。如果是,则根据它们在arr2
中的顺序来排序。如果只有一个元素在arr2
中出现,则将出现在arr2
中的元素排在前面。如果两个元素都不在arr2
中出现,则按照它们在原始数组arr1
中的顺序进行排序。
最后,我们使用sort()
方法和自定义的比较函数customSort
对原始数组arr1
进行排序,并将结果存储在sortedArr
中。最后,我们打印sortedArr
,输出排序后的数组。