gpt4 book ai didi

javascript - 如何按嵌套对象属性对 JavaScript 对象数组进行排序?

转载 作者:IT王子 更新时间:2023-10-29 03:22:07 24 4
gpt4 key购买 nike

我有这个函数可以根据属性对 JavaScript 对象数组进行排序:

// arr is the array of objects, prop is the property to sort by
var sort = function (prop, arr) {
arr.sort(function (a, b) {
if (a[prop] < b[prop]) {
return -1;
} else if (a[prop] > b[prop]) {
return 1;
} else {
return 0;
}
});
};

它适用于这样的数组:

sort('property', [
{property:'1'},
{property:'3'},
{property:'2'},
{property:'4'},
]);

但我也希望能够按嵌套属性进行排序,例如:

sort('nestedobj.property', [
{nestedobj:{property:'1'}},
{nestedobj:{property:'3'}},
{nestedobj:{property:'2'}},
{nestedobj:{property:'4'}}
]);

但是这是行不通的,因为不可能像object['nestedobj.property']那样做,它应该是object['nestedobj']['property' ]

您知道如何解决这个问题并使我的函数使用嵌套对象的属性吗?

提前致谢

最佳答案

您可以在 . 上拆分 prop,并迭代更新 ab 的数组每次迭代期间的下一个嵌套属性。

示例: http://jsfiddle.net/x8KD6/1/

var sort = function (prop, arr) {
prop = prop.split('.');
var len = prop.length;

arr.sort(function (a, b) {
var i = 0;
while( i < len ) { a = a[prop[i]]; b = b[prop[i]]; i++; }
if (a < b) {
return -1;
} else if (a > b) {
return 1;
} else {
return 0;
}
});
return arr;
};

关于javascript - 如何按嵌套对象属性对 JavaScript 对象数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5073799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com