问题描述
{
"firstName": "percy","lastName": "jackson","languages":["Node","english"],"country": "Canada"
}
可接受的字段是:firstName,lastName,languages,country
如果我得到这样的对象:
{
"firstName": "percy","email":"percy.jackson@gmail.com","phoneNumber": "872612334","dob": "04/06/1990","countryCode": "+21","country": "Canada"
}
I want to truncate all the extra fields which are not acceptable
,我该怎么做,不允许手动逐个删除它们(因为每次我们可能没有相同的一组额外字段),但是 only aim is to keep the acceptable fields.
解决方法
只需创建一个新对象并仅添加所需的属性即可。
使用reduce
const obj = {
firstName: "percy",lastName: "jackson",email: "percy.jackson@gmail.com",languages: ["Node","english"],phoneNumber: "872612334",dob: "04/06/1990",countryCode: "+21",country: "Canada",};
const acceptableFields = ["firstName","lastName","languages","country"];
const result = acceptableFields.reduce((acc,curr) => {
acc[curr] = obj[curr];
return acc;
},{});
console.log(result);
您也可以使用 for...of 循环
const obj = {
firstName: "percy",phoneNumber: "8726905758","country"];
const result = {};
for (let prop of acceptableFields) {
result[prop] = obj[prop];
}
console.log(result);
更新代码:如果 obj 中没有可接受的字段。
const obj = {
email: "12345@gmail.com",lastName: "Harshi",name: "ivmla",siranme: "arris",password: "2484489",dob: "05/12/1980"
};
const acceptableFields = ["firstName","country"];
const result = {};
for (let prop of acceptableFields) {
if (obj[prop]) result[prop] = obj[prop];
}
console.log(result);
您可以将可接受的键放入一个数组中,然后遍历对象键并删除不匹配的键。请注意,此方法会改变对象,而不是创建一个新对象。
const ok = ['firstName','lastName','languages','country'];
const obj = {
"firstName": "percy","lastName": "jackson","email":"percy.jackson@gmail.com","languages":["Node","phoneNumber": "8726905758","dob": "04/06/1990","countryCode": "+21","country": "Canada"
}
Object.keys(obj).forEach(key => {
if (!ok.includes(key)) delete obj[key];
});
console.log(obj);
附加文档
,您也可以使用 for...in loop。例如:
const obj = {
"firstName": "percy","email": "percy.jackson@gmail.com","languages": ["Node","country": "Canada"
};
const alw = ['firstName','country'];
for (let p in obj) alw.includes(p) || delete obj[p];
console.log(obj);