假如有一个js对象:
{
"menu_id": 4,
"parent_id": 0,
"title": "管理员",
"name": "admin",
"alias": "",
"icon": "table",
"remark": "管理员操作",
"module": "admin",
"type": 0,
"url": "/admin/AdminGroup",
"params": "",
"target": "_self",
"component_path": "",
"is_navi": 1,
"sort": 50,
"status": 1,
"children_total": 4,
"level": 0
},
要从中取出"title","name","icon","url"组成一个新的对象,有没有比较快捷的方法?
1、使用比较早期的方法。
var arr = ["menu_id","title","icon","url"];
function pick(obj,arr){
var result ={};
for(var i=0;i<arr.length;i++)
{
let field = arr[i];
for(var key in obj){
if(field == key){
result[field] = obj[key];
break;
}
}
}
return result;
}
result = pick(obj,arr);
console.log(result)
2、使用数组方法
var arr = ["menu_id","title","icon","url"];
var result2 = {};
arr.forEach((val, index)=> {
if (val in obj) { result2[val] = obj[val]; }
});
console.log(result2)
3、直接使用reduce
方法累计
var arr = ["menu_id","title","icon","url"];
var result3 = {};
arr.reduce((iter, val) => {
if(val in obj) {
result3[val] = obj[val];
}
return result3;
}, {});
console.log(result3)
4、如果要排除的元素比较少,可以直接使用解构
let {parent_id,name,alias,remark,...result4}=obj
console.log(result4);
朋友们,你们还有别的好方法没,你们认为哪种比较好?
正文完