如何将一个数组排序为与另一个相同

How to sort one array the same as another one?

本文关键字:数组排序 另一个 一个      更新时间:2023-09-26

问题:我有一个对象数组,我通过一个对象键对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中的每个对象都有自己的字符串。比如,john有r1,他们都是第一个索引,当我按数字排序时,john排第二,我希望他的数字也排第二(还有david和margaret的数字)

我需要重新安排arrayofstring相同的方式(我不在乎它是由什么排序)的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;
    }
}

我建议您以[[object, string], ...]的格式压缩列表,然后根据元组的第一个元素排序。您可以随后解压缩该列表。