Javascript 如何将C#字典传递到typescript映射中
如何将C#字典正确地传递到typescript映射中Javascript 如何将C#字典传递到typescript映射中,javascript,angular,typescript,asp.net-core,asp.net-web-api,Javascript,Angular,Typescript,Asp.net Core,Asp.net Web Api,如何将C#字典正确地传递到typescript映射中 [HttpGet("reportsUsage")] public IActionResult GetReportsUsage() { //var reportsUsage = _statService.GetReportsUsage(); IDictionary<int, int> test = new Dictionary<int, int>();
[HttpGet("reportsUsage")]
public IActionResult GetReportsUsage()
{
//var reportsUsage = _statService.GetReportsUsage();
IDictionary<int, int> test = new Dictionary<int, int>();
test.Add(1, 20);
test.Add(2, 30);
test.Add(3, 40);
test.Add(4, 50);
test.Add(5, 70);
test.Add(6, 60);
test.Add(7, 90);
test.Add(8, 30);
return Ok(test);
//return Ok(reportsUsage );
}
TypeError:对象不可编辑(无法读取属性符号(Symbol.iterator))
1-如果要使用reportsUsage创建映射,请执行以下操作:
const map = new Map(Object.entries(this.reportsUsage));
console.log(map.get("1")); // prints 20
2-如果您想要仅包含值的数组:
const arrayOfValues = Object.values(this.reportsUsage)
我不知道C#在这里有多重要,除了这样一个事实,即通过连接的是一个JSON对象:
const data: Record<number, number> =
{ 1: 20, 2: 30, 3: 40, 4: 50, 5: 70, 6: 60, 7: 90, 8: 30 };
如果要将其转换为
映射
,则需要使用键值的适当的可编辑参数(如数组)进行调用。由于JSON对象总是有string
键,而不是实际的number
s,如果希望生成的映射是map
,而不是map
,则需要自己转换为数字:
看起来不错。
const arrayOfValues = Object.values(this.reportsUsage)
const data: Record<number, number> =
{ 1: 20, 2: 30, 3: 40, 4: 50, 5: 70, 6: 60, 7: 90, 8: 30 };
this.http.get<Record<number, number>>(...)
const map = new Map(Object.entries(data).map(([k, v]) => [+k, v]));
// const map: Map<number, number>
console.log(map.get(3)?.toFixed(2)) // "40.00"