简体   繁体   English

从响应中仅提取所需的变量 - Angular 7

[英]Extract only required variable from Response - Angular 7

I have the following interface我有以下界面

interface Employee{name?:string;id?:string;role?:string;}

I Have a Response like this我有这样的回应

{
   "name": "John",
   "id": "ID77777",
   "role": "Engineer",
   "bloodType": "O+ve",
   "placeOfDeployment": "NY"
}

I want to extract only the member variables of Interface.So after i am done with the mapping i should get我只想提取接口的成员变量。所以在我完成映射后我应该得到

{
   "name": "John",
   "id": "ID77777",
   "role": "Engineer"
}

You can use lodash which has pick function or here's vanilla js with same result.您可以使用pick function 的 lodash 或这里的 vanilla js,结果相同。

const res = {"name": "John","id": "ID77777","role": "Engineer","bloodType": "O+ve","placeOfDeployment": "NY"};

const user = ["name", "id", "role"].reduce((acc, key) => {
  acc[key] = res[key];
  return acc;
}, {})

Note: handle case where res has missing keys.注意:处理 res 缺少键的情况。

You can use object destructing您可以使用 object 破坏

 const response = { "name": "John", "id": "ID77777", "role": "Engineer", "bloodType": "O+ve", "placeOfDeployment": "NY" } // this will extract name,id,role property from response const {name,id,role} = response; // create a new object and assign those properties let obj = { name, id, role }; console.log(obj)

You can use ts-transformer-keys , which enables you to obtain keys of given type.您可以使用ts-transformer-keys ,它使您能够获取给定类型的密钥。

import { keys } from 'ts-transformer-keys';    

const keysOfEmployee = keys<Employee>();
const response = {
  "name": "John",
  "id": "ID77777",
  "role": "Engineer",
  "bloodType": "O+ve",
  "placeOfDeployment": "NY"
};

const result = {};
keysOfEmployee.forEach(k => result[k] = response[k]); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM