javascript - 用另一个数组的对象键过滤一个对象
问题描述
我正在尝试用数组内的另一个对象过滤一个对象。
更准确地说,我试图将数组内对象的键与我的主对象的键进行比较。如果值相同,我想返回与这些键对应的值。
这是一个例子:
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+"]
我试过使用filter
,Array.prototype.some
但我什么也想不通。关于我应该如何实现这一目标的任何建议?
解决方案
首先制作一个数组或 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);
推荐阅读
- laravel - 对非必填字段应用数字验证
- mips - 这些 r 型位数是如何变成 0、11、12、18、0 和 x18 的?(下图)
- ruby-on-rails - 如何在同一页面中显示数据和表单
- java - Sencha CMD 7 dockerfile 因非法反射访问而失败
- javascript - 在 background.js 中使用 chrome.runtime.connectNative() 获取错误
- node.js - 如何在客户端传递 JWT 令牌?
- c# - 最大长度 255 阻止表单提交,尽管 StringLength 更长
- javascript - 如何检查元素类子项是否具有特定类
- sql - BigQuery 中具有不同元素的数组串联
- angular - 仅在生产模式下使用 exif-js 的 Angular 无法正常工作