c# - 从模型数组中透视 json 数据

标签 c# javascript arrays asp.net-web-api pivot

我托管了一个网络 API 服务,该服务返回我的模型“myModel”在过去 12 个月的快照。我在客户端收到的 json 数组是一个包含 12 个“myMydel”对象的简单数组。

如果 myModel 具有属性“foo”和“bar”,在 javascript 中是否有一种有效的方法来旋转数组以生成属性数组的集合,例如:

我想转型

history{
  myModel[]
     myModel[0]
       foo: 1
       bar: 2
       Key: 1
     myModel[1]
       foo: 3
       bar: 4
       Key: 1
 }

进入

history{
    "1"{  //key
      foo[] 
        foo[0]: 1
        foo[1]: 3
      bar[]
         bar[0]: 2
         bar[1]: 4
      }
  }

如果在服务器端实现效率更高,我愿意接受。我的 API 服务是 .NET 4.5 Web Api。

又是这样。我的问题是,是否有一种 super 有效的方法可以在 javascript 中实现这些结果?如果没有,c# 中有吗?有人可以提供一些简单的示例代码让我继续吗?

非常感谢您的帮助。谢谢!

编辑:工作代码

尽管我在这个问题上被否决了,但我认为我会提供一个实现此目的的 javascript 工作示例。它也非常快。请注意,每条历史记录都必须有一个 Key 来对记录进行分组。

  _pivot = function(history) {
    var i, pivoted, prop, rec;
    pivoted = {};
    if (history !== null) {
      i = 0;
      while (i < history.length) {
        rec = history[i];
        pivoted[rec.Key] = pivoted[rec.Key] || {};
        for (prop in rec) {
          pivoted[rec.Key][prop] = pivoted[rec.Key][prop] || [];
          if (!pivoted[rec.Key][prop].date) {
            pivoted[rec.Key][prop].push({
              value: rec[prop]
            });
          }

        }
        i++;
      }
      return pivoted;
    }
    return null;
  };

最佳答案

嗯,就超高效而言,我认为除非你改变你的底层模型,否则你将不得不遍历你的模型,无论是服务器端还是客户端,并将每个属性分配给不同的数组。

var tempFoo = newArray(); tempBar = newArray();
for (var i = 0; i < myModel.length; i++){
    tempFoo.push(myModel[i].foo);
    tempBar.push(myModel[i].bar);
}

此外,如果您在服务器端代码中对它进行排序,或者如果它只是从您从中提取的任何数据库中自动排序,您将看到速度提高。 Why is it faster to process a sorted array than an unsorted array?

希望这对您有所帮助,仅供引用,示例是 Javascript。

V/R

关于c# - 从模型数组中透视 json 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17702487/

相关文章:

c# - 将 KeyValuePair<int,string> 转换为 int[] 数组和 string[] 数组

c# - 当窗体具有许多下拉列表控件时,C#.net 窗体调整大小缓慢

javascript - bower.json 中要忽略的内容

javascript - 将选择的选项值从一种表单复制到另一种表单

javascript - 具有 CSS 类的 img 的 DataURL

php - 如何获取递归数组的父级?

c# - asp.net网站如何获取cookie值

c# - 如何使用 .Net 中的 IRFC 函数将多个表传递给 SAP

java - 为什么 Collection<E>#toArray() 不返回 E[]?

php - 将数字分成数字组