我的问题: 我有一个对象数组,我通过其中一个对象键对ASC DESC进行排序,之后我需要对一个字符串数组进行排序,该数组将按照对象数组的排序方式进行排序。 例如:
arrayOfObjects = [{name:"john",nuber:6,food:"pizza"},
{name:"david",nuber:2,food:"gulash"},
{name:"margaret",nuber:7,food:"gugi barries"}]
arrayOfStrings = ['r1','r2','r3']
所以arrayOfObjects中的每个对象都有自己的字符串。所以说,约翰有r1,他们都是第一个被索引的,当我按数字排序时,约翰排在第二位,我希望他的数字也排在第二位(以及大卫和玛格丽特数字)
我需要以相同的方式重新排列arrayOfStrings(我不关心它的排序)arrayOfObjects已经排序
我的排序功能:
dataArray.sort(dynamicSort(sortBy));
function dynamicSort(property) {
var sortOrder = 1;
if(property[0] === "-") {
sortOrder = -1;
property = property.substr(1);
}
return function (a,b) {
if(direction=='asc'){
var c = b;
b=a;
a=c;
}
var result = ( b[property] < a[property]) ? -1 : ( b[property]> a[property]) ? 1 : 0;
return result * sortOrder;
}
}
答案 0 :(得分:2)
我建议你以[[object, string], ...]
格式压缩列表,然后根据元组的第一个元素进行排序。您可以在之后解压缩列表。