,可以通过以下步骤实现:
下面是一个示例代码,演示如何按嵌套键对数组排序并保持现有排序不变:
function nestedSort(arr, key) {
if (arr.length <= 1) {
return arr;
}
const pivot = arr[0];
const less = [];
const equal = [];
const greater = [];
for (const obj of arr) {
const compare = compareNestedKeys(obj, pivot, key);
if (compare < 0) {
less.push(obj);
} else if (compare === 0) {
equal.push(obj);
} else {
greater.push(obj);
}
}
return [...nestedSort(less, key), ...equal, ...nestedSort(greater, key)];
}
function compareNestedKeys(obj1, obj2, key) {
const value1 = getNestedValue(obj1, key);
const value2 = getNestedValue(obj2, key);
if (value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return arr.indexOf(obj1) - arr.indexOf(obj2);
}
}
function getNestedValue(obj, key) {
const keys = key.split('.');
let value = obj;
for (const k of keys) {
value = value[k];
}
return value;
}
// 示例数据
const arr = [
{ name: 'John', age: 25 },
{ name: 'Alice', age: 30 },
{ name: 'Bob', age: 20 },
{ name: 'Alice', age: 35 },
{ name: 'John', age: 40 }
];
const sortedArr = nestedSort(arr, 'name');
console.log(sortedArr);
在上述示例代码中,我们定义了 nestedSort
函数来对数组进行排序,compareNestedKeys
函数用于比较两个对象的嵌套键的值,getNestedValue
函数用于获取对象的嵌套键的值。
请注意,上述示例代码中没有提及任何特定的云计算品牌商或产品。如需了解腾讯云相关产品和产品介绍,请访问腾讯云官方网站。
领取专属 10元无门槛券
手把手带您无忧上云