You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中读取C# SortedList类型数据?

解决SignalR前端无法获取SortedList值的问题

嘿,我明白你遇到的问题了——C#里的SortedList在通过SignalR序列化到前端JavaScript后,并不是你以为的数组类型,而是变成了一个键值对形式的普通对象,所以直接用length或者count肯定拿不到数量,遍历方式也和数组不一样。

问题根源

C#的SortedList<K,V>在JSON序列化后,会被转换成类似这样的JS对象:

{
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}

而JS里的普通对象没有length或count属性,这就是你之前尝试各种变体都无效的原因。

解决方案

1. 获取SortedList的元素数量

你可以用Object.keys()方法提取对象的所有键,然后取这个键数组的长度:

// 假设你的SortedList对应的前端变量叫sortedListData
const itemCount = Object.keys(sortedListData).length;
console.log("SortedList元素数量:", itemCount);

2. 遍历SortedList的键值对

有两种常用的遍历方式,都能保留原SortedList的排序顺序:

方式一:遍历键再取值
const keys = Object.keys(sortedListData);
keys.forEach(key => {
  const value = sortedListData[key];
  console.log(`键:${key},值:`, value);
  // 这里可以处理你的业务逻辑
});
方式二:直接遍历键值对(更简洁)
Object.entries(sortedListData).forEach(([key, value]) => {
  console.log(`键:${key},值:`, value);
  // 执行你的操作
});

额外提示

如果你的SortedList的键是数字类型,现代浏览器会自动按数字升序排列键的顺序,和C#里的SortedList保持一致;如果是字符串键,会按插入顺序(也就是SortedList的排序顺序)返回,不用担心顺序错乱的问题。

内容的提问来源于stack exchange,提问作者millie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:10:55