首页 > 解决方案 > 按键名过滤单个 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我没有得到我想要的,我发现的例子只是对象数组,但在这种情况下我需要过滤一个对象。

谢谢你。

标签: javascriptjson

解决方案


可以使用一个简单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))


推荐阅读