简体   繁体   English

如何从Typescript中的JSON作为键值对形成新对象?

[英]How to form a new object from a json as key value pair in Typescript?

I have a below json array of objects which have data of currency list. 我在对象的json数组下面有货币列表数据。

 [  
   {  
      id:"AUD",
      value:"1.55"
   },
   {  
      id:"BGN",
      value:"1.95"
   },
   {  
      id:"USD",
      value:"1.17"
   },
   {  
      id:"CAD",
      value:"1.51"
   },
   {  
      id:"EUR",
      value:"1"
   },
   {  
      id:"INR",
      value:"80.00"
   }
]

I want to form a new array of object say newList with only currency value for USD, CAD and EUR. 我想形成一个新的对象数组newList,其中只有USD,CAD和EUR的货币值。 I can manually find the position of the object(eg: say item[3].value will give rate for CAD)and update the new object but I want to look for key values and get the values instead of getting index positions manually. 我可以手动找到对象的位置(例如:说item [3] .value将给出CAD的汇率)并更新新对象,但是我想查找键值并获取值,而不是手动获取索引位置。 How to do the same? 怎么做呢?

I hope this is what you expect. 希望这就是您的期望。

This is your original list. 这是您的原始列表。

const list = [{ id: "AUD", value: "1.55" }, { id: "BGN", value: "1.95" }, { id: "USD", value: "1.17" }, { id: "CAD", value: "1.51" }, { id: "EUR", value: "1" }, { id: "INR", value: "80.00" }];

And this is how you can extract the wanted objects by comparison with their id. 这就是通过与ID进行比较来提取所需对象的方法。

const newList = list.filter(el => this.matches(el.id));

console.log(newList);

This method does the comparison for you and returns true when id matches. 此方法为您进行比较,并在id匹配时返回true。 You can dynamically remove or add currencies. 您可以动态删除或添加货币。

private matches(id: string): boolean {
    let match: boolean = false;

    switch (id) {
        case 'AUD':
            match = true;
            break;
        case 'USD':
            match = true;
            break;
        case 'EUR':
            match = true;
            break;
        default:
            match = false;
            break;
    }

    return match;
}

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

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