我有两个包含相同元素但排列顺序不同的数组,如下所示:
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
重新排列一个数组以匹配另一个数组。
有关如何解决此问题的任何提示?
答案 0 :(得分:1)
也许这样的事情呢?但是这假设数组中的每个对象都具有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);

答案 1 :(得分:0)
我认为您可以扫描排列的数组并搜索第二个数组中的元素并将它们放入一个新数组中。
new_array;
foreach(element in array_ordered)
{
temp = search(element[name], array_unordered);
if(temp != null)
new_array.add(temp);
}