javascript - 如何通过Javascript中的数组从对象过滤中获取属性
问题描述
我有一个这样的 JS 对象:
const myObj = {
'$prop1': 1,
'$prop2': 2,
'$prop3': 3
};
和这样的对象数组:
const myArray = [
{
prop1: 'some stuff',
prop2: 'some other stuff',
propKey: '$prop1'
},
{
prop1: 'some stuff',
prop2: 'some other stuff',
propKey: '$prop2'
},
{
prop1: 'some stuff',
prop2: 'some other stuff',
propKey: '$prop5'
},
];
我正在尝试编写一个过滤 myObj 的函数,并且只获取我可以在 myArray.propKey 中找到的字段。
这是我到目前为止没有运气的尝试:
export const filterVariantContentByColumns = (myObj, myArray) => {
const objArray = Object.keys(myObj).map(i => myObj[i]);
return objArray.filter(value => myArray.includes(value.key_name));
console.log(res);
};
知道该怎么做吗?
解决方案
您可以迭代数组并映射找到的属性。
const
myObj = { $prop1: 1, $prop2: 2, $prop3: 3 },
myArray = [{ prop1: 'some stuff', prop2: 'some other stuff', propKey: '$prop1' }, { prop1: 'some stuff', prop2: 'some other stuff', propKey: '$prop2' }, { prop1: 'some stuff', prop2: 'some other stuff', propKey: '$prop5' }],
result = myArray.flatMap(({ propKey }) => propKey in myObj ? myObj[propKey] : []);
console.log(result);
带钥匙
const
myObj = { $prop1: 1, $prop2: 2, $prop3: 3 },
myArray = [{ prop1: 'some stuff', prop2: 'some other stuff', propKey: '$prop1' }, { prop1: 'some stuff', prop2: 'some other stuff', propKey: '$prop2' }, { prop1: 'some stuff', prop2: 'some other stuff', propKey: '$prop5' }],
result = Object.fromEntries(myArray.flatMap(({ propKey }) => propKey in myObj ? [[propKey, myObj[propKey]]] : []));
console.log(result);
推荐阅读
- sql - 根据 Bigquery 计划查询中的日期动态更改 FROM 表名
- reactjs - 在 React Hooks 中输入文本时,antd Select Option 不呈现
- blazor-webassembly - Blazor WASM TargetFrameworks 网络标准 2.1 和 net5.0
- javascript - 单击按钮时切换脚本执行
- android - 无法加载 github.com 的信息
- assembly - 二叉搜索树插入程序集 x86
- css - @media 查询中的 CSS 字体大小在旋转后不会变回
- javascript - 谷歌表格隐藏网址
- configuration - 这个“编辑小部件”视图(适用于 iOS 14 小部件)的名称是什么?我该如何定义这样的东西?
- java - java继承子类扩展到父类时没有返回值