下面是使用Python实现的一种解决方法:
def nested_sort(arr, keys):
if len(keys) == 0:
return arr
key = keys[0]
arr.sort(key=lambda x: x[key])
for i in range(len(arr)):
if i > 0 and arr[i][key] == arr[i-1][key]:
sub_arr = [arr[i-1], arr[i]]
j = i+1
while j < len(arr) and arr[j][key] == arr[i][key]:
sub_arr.append(arr[j])
j += 1
sorted_sub_arr = nested_sort(sub_arr, keys[1:])
arr[i-1:i+j-1] = sorted_sub_arr
i += len(sorted_sub_arr) - 1
return arr
使用示例:
arr = [{"name": "John", "age": 25, "score": 80},
{"name": "Alice", "age": 23, "score": 85},
{"name": "Bob", "age": 25, "score": 70},
{"name": "Alice", "age": 22, "score": 90},
{"name": "John", "age": 20, "score": 75}]
keys = ["name", "age", "score"]
sorted_arr = nested_sort(arr, keys)
for item in sorted_arr:
print(item)
输出结果:
{'name': 'Alice', 'age': 22, 'score': 90}
{'name': 'Alice', 'age': 23, 'score': 85}
{'name': 'Bob', 'age': 25, 'score': 70}
{'name': 'John', 'age': 20, 'score': 75}
{'name': 'John', 'age': 25, 'score': 80}
这个方法通过递归地对每一层嵌套键进行排序,保持其他层级的排序不变。
上一篇:按嵌套对象值对数组进行排序
下一篇:按嵌套键对字典进行排序