微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何删除javascript对象中指定字段以外的任何其他字段?

如何解决如何删除javascript对象中指定字段以外的任何其他字段?

我有一个这样的 js 对象

{
    "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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。