使用对象值动态合并数组

Dynamically merge arrays using object values

我有以下数组:

var scores = [
  { user: "Bob", score: 19 }, 
  { user: "Harry", score: 27 }, 
  { user: "Janelle", score: 35 }
]

var ranks = [
  { name: "Bob", rank: 3 }, 
  { name: "Harry", rank: 2 }, 
  { name: "Janelle", rank: 1 }
]

如何合并这两个数组和 return 一个数组,如:

var merged = [
  { name: "Bob", rank: 3, score: 19  }, 
  { name: "Harry", rank: 2, score: 27  }, 
  { name: "Janelle", rank: 1, score: 35  }
]

匹配 scores 到第一个数组中的相应名称?

您可以按如下方式使用.map() with spread syntax

const scores = [
  { user: "Bob", score: 19 }, 
  { user: "Harry", score: 27 }, 
  { user: "Janelle", score: 35 }
];

const ranks = [
  { name: "Bob", rank: 3 }, 
  { name: "Harry", rank: 2 }, 
  { name: "Janelle", rank: 1 }
];

const result = scores.map(e => ({...e, rank: ranks.find(r => r.name === e.user).rank}));

console.log(result);

希望对您有所帮助!