基于任意长度属性对JavaScript对象数组进行排序
我有一个JavaScript排序数组函数,它接受我提供的一个字符串,它是我要排序的属性的名称,它根据该属性名称对数组进行排序 因此: 在我的用户界面上,我有一个下拉列表,其中列出了该数组中属性的某些值;因此,我可能会这样分类:基于任意长度属性对JavaScript对象数组进行排序,javascript,arrays,sorting,object,Javascript,Arrays,Sorting,Object,我有一个JavaScript排序数组函数,它接受我提供的一个字符串,它是我要排序的属性的名称,它根据该属性名称对数组进行排序 因此: 在我的用户界面上,我有一个下拉列表,其中列出了该数组中属性的某些值;因此,我可能会这样分类: “姓名” “地址.邮政编码” “地址、合同、时间” 但是,目前我的排序函数必须通过拆分来解码有多少个“.”,然后我可以根据arr[prop1]或arr[prop1][prop2]或arr[prop1][prop2][prop3]进行排序,这意味着我必须明确说明我所指的
- “姓名”
- “地址.邮政编码”
- “地址、合同、时间”
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:更正了我的第一次使用cmp
from和ref
from;)
妙极了!谢谢:)
{
{
"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")
prop = "Address.Contract.ExampleProp1"
ary.sort(function(a, b) {
return cmp(ref(a, prop), ref(b, prop))
})