我有一个 JavaScript 排序数组函数,它接受我提供的字符串作为参数,该字符串是我想要按照其排序的属性名称,并且通过该属性名称对我的数组进行排序。
因此:
我想要的是,这个排序函数可以继续接受这个字符串,但可以将其视为任意长度的属性进行排序;下面的例子可能更容易解释:
我有一个 JavaScript 对象数组,它采用以下结构(这只是一个示例,以显示我拥有的多级嵌套):
在我的用户界面上,我有一个下拉菜单,可以将某些值分配给此数组中的属性;因此,我可能会按以下方式进行排序:
理想情况下,我希望能够提供它该字符串,然后该函数就能够确定它需要的嵌套层次-但我不知道如何做到这一点,因为我不确定除了明确说明数组索引之外是否还有其他方法。
是否有什么方法可以实现这一点,以便我可以向我的排序函数传递以下一些内容,并且它可以在不必硬编码数组深度的情况下计算出所需的嵌套?例如:
因此,我可以为它提供任何大小的属性长度参数,它会自动解决。希望这样说得清楚:)谢谢。 编辑1:更改了标题。 编辑2:纠正了我的第一个错误。
因此:
function sortProp(myArr, prop) {
return myArray.sort(function (a, b) {
return a[prop] < b[prop];
}
}
我想要的是,这个排序函数可以继续接受这个字符串,但可以将其视为任意长度的属性进行排序;下面的例子可能更容易解释:
我有一个 JavaScript 对象数组,它采用以下结构(这只是一个示例,以显示我拥有的多级嵌套):
{
{
"Name" : "John Smith"
"Address" : {
"Line 1" : "123 Some Street"
"Line 2" : "Some Neighbourhood"
"Town" : "Some Town"
"PostCode" : "ST1 1ST"
"Contract" : {
"Name" : "CON1"
"Hours" : 24
}
}
},
{
"Name" : "Mary Jones"
"Address" : {
"Line 1" : "321 Some Other Street"
"Line 2" : "Some Other Neighbourhood"
"Town" : "Some Other Town"
"PostCode" : "SO1 1OS"
"Contract" : {
"Name" : "CON2"
"Hours" : 48
}
}
}
}
在我的用户界面上,我有一个下拉菜单,可以将某些值分配给此数组中的属性;因此,我可能会按以下方式进行排序:
- "名称"
- "地址.邮政编码"
- "地址.合同.小时数"
理想情况下,我希望能够提供它该字符串,然后该函数就能够确定它需要的嵌套层次-但我不知道如何做到这一点,因为我不确定除了明确说明数组索引之外是否还有其他方法。
是否有什么方法可以实现这一点,以便我可以向我的排序函数传递以下一些内容,并且它可以在不必硬编码数组深度的情况下计算出所需的嵌套?例如:
sort(myArray, "Name")
sort(myArray, "Address.PostCode")
sort(myArray, "Address.Contract.Hours")
sort(myArray, "Address.Contract.ExampleProp1")
sort(myArray, "Address.Contract.ExampleProp1.ExampleProp2.ExampleProp3")
因此,我可以为它提供任何大小的属性长度参数,它会自动解决。希望这样说得清楚:)谢谢。 编辑1:更改了标题。 编辑2:纠正了我的第一个错误。