javascript - 使用另一个数组的对象键过滤一个对象

标签 javascript arrays

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

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

这是一个例子:

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 但我什么也没弄清楚。关于我应该如何实现这一目标有什么建议吗?

最佳答案

首先创建一个包含 b 内所有键的数组或 Set,然后使用 .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);

关于javascript - 使用另一个数组的对象键过滤一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60593352/

相关文章:

javascript - 在本地主机上模拟加载

c - 循环数组,找到零,执行操作,停止

java - for 循环与数组集进行比较

java - 如何将值返回到二维数组?

javascript - PHP json_encode 作为数组字符串返回,但未正确转换为 JavaScript 中的数组

java - Java 中数组的模式 - 方法

javascript - 贪婪在 JavaScript 中表现不同?

javascript - 停止在jsp中将 "<"转换为 "&lt;"

javascript - 了解 JavaScript 中的导入语法

javascript - 所有页面上的 DataTables 管道总数