Javascript基于另一个索引重新索引数组

Jas*_*hen 2 javascript

试图搞清楚.不能.我有2个数组,我想对其中一个数组的索引进行排序以匹配其对象的索引.

数组1如下:

var arr1 = [
  {
   "name": "bobby",
   "occupation": "singer"
  },
  {
   "name": "mindy",
   "occupation": "artist"
  }
] 
Run Code Online (Sandbox Code Playgroud)

和数组2:

var arr2 = [
  {
   "name": "mindy",
   "hobby": "drawing"
  },
  {
   "name": "bobby",
   "hobby": "driving"
  }
]
Run Code Online (Sandbox Code Playgroud)

重新索引哪一个并不重要.关键是我有两个名字bobby,mindy并且我想重新安排其中一个数组,以便它们的索引匹配另一个.

kid*_*ils 5

sortcompareFunction一起使用.

在下面找到内联的评论.

var arr1 = [
  {
   "name": "bobby",
   "occupation": "singer"
  },
  {
   "name": "mindy",
   "occupation": "artist"
  }
] 

var arr2 = [
  {
   "name": "mindy",
   "hobby": "drawing"
  },
  {
   "name": "bobby",
   "hobby": "driving"
  }
]

// create intermediate array of arr2 names
arr2Names = arr2.map(x => x.name)

// use sort:
arr1 = arr1.sort((x,y) => arr2Names.indexOf(x.name) - arr2Names.indexOf(y.name))
console.log(arr1, arr2)
Run Code Online (Sandbox Code Playgroud)

var arr2 = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
var arr1 = ['b', 'd', 'g', 'f', 'e', 'a', 'c']
console.log(arr1.sort((x,y) => arr2.indexOf(x)  - arr2.indexOf(y)))
Run Code Online (Sandbox Code Playgroud)