以下是一个示例代码,演示如何按嵌套对象属性对数组对象进行排序:
// 嵌套对象属性排序函数
function sortByNestedProperty(arr, property) {
return arr.sort((a, b) => {
let propA = getProperty(a, property);
let propB = getProperty(b, property);
if (propA < propB) {
return -1;
} else if (propA > propB) {
return 1;
} else {
return 0;
}
});
}
// 递归获取嵌套对象属性值
function getProperty(obj, property) {
let properties = property.split('.');
let value = obj;
for (let prop of properties) {
value = value[prop];
}
return value;
}
// 示例数据
let arr = [
{ name: { first: 'John', last: 'Doe' }, age: 30 },
{ name: { first: 'Alice', last: 'Smith' }, age: 25 },
{ name: { first: 'Bob', last: 'Johnson' }, age: 35 }
];
// 按嵌套对象属性name.first对数组对象进行排序
let sortedArr = sortByNestedProperty(arr, 'name.first');
console.log(sortedArr);
在这个示例中,sortByNestedProperty
函数接受一个数组和一个嵌套对象属性作为参数,并使用sort
方法对数组进行排序。 getProperty
函数是一个递归函数,用于获取嵌套对象中的属性值。在示例数据中,我们有一个包含多个对象的数组,每个对象都有嵌套的name
对象属性,其中包含first
属性。最后,我们使用sortByNestedProperty
函数按name.first
属性对数组对象进行排序,并打印排序后的结果。
上一篇:按嵌套对象数量筛选文档