javascript - 按键名过滤单个 JSON
问题描述
我想only
在 JS 中创建某种类型的 Laravel 方法。
我有以下 JSON:
let obj = {
name: "Wil",
age: "20",
id: "1"
}
还有一个过滤器数组:
let filters = ['name', 'age'];
在这种情况下,我想要一个带有 2 个参数的函数:
const filterJSON = (object, filters) => {
}
而且我希望该函数仅返回相同的对象,其中仅包含我在过滤器数组中传递的键名。
在这种情况下:
{
name: "Wil",
age: "20"
}
我有一段时间尝试,.map
但.filter
我没有得到我想要的,我发现的例子只是对象数组,但在这种情况下我需要过滤一个对象。
谢谢你。
解决方案
可以使用一个简单reduce()
的返回一个新对象
let obj = { name: "Wil",age: "20",id: "1"}
let filters = ['name', 'age'];
const filterJSON = (obj, fil) => fil.reduce((a,c) => (a[c] = obj[c], a),{})
console.log(filterJSON(obj, filters))
推荐阅读
- laravel - Laravel Eloquent:一对多的关系与不同的
- node.js - Angular 通用慢速 TTFB - npm run serve:ssr
- amazon-web-services - 使用 AWS CDK 创建 AWS DMS 任务
- javafx - JavaFX 字体中的抗锯齿(字体呈现非常清晰锐利但不平滑)
- javascript - 分享对话 - Facebook SDK
- python - Python 库在 Mac 上的终端中不起作用
- amazon-web-services - AWS dynamoDb 分页限制
- linear-regression - 使用线性系统 Ax =b 的预处理器减少误差
- javascript - 客户端可以修改javascript代码吗?
- node.js - 无法在 Mac osx 的请求标头中发送 cookie