重新排列数组的索引以匹配其他数组

Rearrange index of array to match other array

本文关键字:数组 索引 其他 排列 新排列      更新时间:2023-09-26

我有两个数组,它们包含相同的元素,但顺序不同,如下所示:

var arr1 = [{name: 'Bob', age: 24}, {name: 'Mary',age: 45}, {random: props}]; 
var arr2 = [{name: 'Mary', age:45 }, {name: 'Bob',24}, {other: randomProps}];

当然,在这种情况下,一个简单的reverse()就可以了,但它可能是一个按随机顺序包含10个对象的数组。

由于两个数组总是包含一些共同的属性(name),我应该能够根据name重新排列一个数组以匹配另一个。

关于如何做到这一点,有什么建议吗?

也许是这样的?但这是假设数组中的每个对象都具有name属性。

var arr1 = [{name: 'Bob', age: 24}, {name: 'Mary',age: 45}, {random: props}]; 
var arr2 = [{name: 'Mary', age:45 }, {name: 'Bob',24}, {other: randomProps}];
function sortArray(arr) {
 arr.sort(function(a, b) {
   return a.name > b.name;
 }); 
}
sortArray(arr1);
sortArray(arr2);

我认为你可以扫描排列好的数组,搜索第二个数组中的元素,并将它们放在一个新的数组中。

new_array;
foreach(element in array_ordered)
{
    temp = search(element[name], array_unordered);
    if(temp != null)
        new_array.add(temp);
}