js中如何动态的从对象中过滤出指定的值

实现一个方法,动态过滤出对象arr中指定键的值,并返回一个新的对象;

//原始数据

  let arr= {
        a:"文本一",
        b:"文本二",
        c:"文本三",
    }
   

//执行方法 fun(["a","b"]) 得到过滤后的对象

  let arr= {
        a:"文本一",
        b:"文本二"
    }
阅读 10.6k
7 个回答
let arr= {
        a:"文本一",
        b:"文本二",
        c:"文本三",
    }
var obj = {};

function fun(arg){
    for(var i in arr){
        for(var j = 0; j<arg.length;j++){
            if(i==arg[j]){
                obj[i] = arr[i]
            }
        }
    }

}

刚好从项目工具类里看到一个。。顺手给你

function getTargetObject(targetObject, propsArray) {
    if (typeof (targetObject) !== "object" || !Array.isArray(propsArray)) {
        throw new Error("参数格式不正确");
    }
    const result = {};
    Object.keys(targetObject).filter(key => propsArray.includes(key)).forEach(key => {
        result[key] = targetObject[key];
    })
    return result;
}

以下是使用效果。。

clipboard.png

Object.keys(JSON.parse(JSON.stringify({a:"文本一",b:"文本二",c:"文本三"},['a','b'])))

给个提示

获取对象键名
Object.keys()

新手上路,请多包涵

var b = {

    a:"文本一",
    b:"文本二",
    c:"文本三",
}

function fun(arr,obj){
let o = {}
Object.keys(obj).forEach(item=>{
if(~arr.indexOf(item)){
o[item]=obj[item]
}
})
return o
}
var obj = fun(['a','b'],b)
console.log(obj)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题