首页 > 解决方案 > 用另一个数组的对象键过滤一个对象

问题描述

我正在尝试用数组内的另一个对象过滤一个对象。

更准确地说,我试图将数组内对象的键与我的主对象的键进行比较。如果值相同,我想返回与这些键对应的值。

这是一个例子:

var a = {
  "maths":"A++",
  "literature":"C-",
  "sports":"B+",
  "biology":"D",
  "chemistry":"A",
  "english":"A+",
  "physics":"C+"
}


var b = [{
  "maths":"Mathematics",
  "biology":"Biology",
  "physics":"Physics"
}]

我想检查对象中的任何键是否在对象b内部a,如果是,我想将它们的值返回到数组中。例如,我想返回["A++","D","C+"]

我试过使用filterArray.prototype.some但我什么也想不通。关于我应该如何实现这一目标的任何建议?

标签: javascriptarrays

解决方案


首先制作一个数组或 Set 里面的所有键b,然后使用.map来访问a对象上的每个键:

var a = {
  "maths":"A++",
  "literature":"C-",
  "sports":"B+",
  "biology":"D",
  "chemistry":"A",
  "english":"A+",
  "physics":"C+"
}


var b = [{
  "maths":"Mathematics",
  "biology":"Biology",
  "physics":"Physics"
}];
const keys = b.flatMap(Object.keys);
const arr = keys.map(key => a[key]);
console.log(arr);


推荐阅读