javascript - 如何改造具有 1 个具有特定属性的核心对象的 json

标签 javascript json angular6

我在 json 中有 1 个对象核心,这些对象具有 vendor 属性。还有其他对象具有相同的 vendor 名称但其他值不同。所以我想用下面的格式改造这个 json。

最初我有以下 json。

[
{val: 2, supplier:"A"},
{val: 2, supplier:"b"},
{val: 1, supplier:"c"},
{val: 0, supplier:"b"},
{val: 3, supplier:"A"},
{val: 5, supplier:"c"}
]

我想要以下格式。

{
"A": [{val: 2, supplier:"A"},{val: 3, supplier:"A"}],
"b": [{val: 2, supplier:"b"},{val: 0, supplier:"b"}],
"c":[{val: 1, supplier:"c"}, {val: 5, supplier:"c"}]
.....
}

这里最重要的因素是数据的数量。我知道这么多数据需要相当长的时间。哪种方式最好是服务器端还是客户端?如果是客户端,那么我想要一种非常优化的实现方式。我已经知道使用 forEach 和其他循环(如过滤器)的正常方式。

谢谢

最佳答案

遍历所有项目。跳过 vendor 不存在的错误。

    //where p is the object that needs sorting
    var p = [ {val: 2, supplier:"A"}, {val: 2,           supplier:"b"}, {val: 1, supplier:"c"}, {val: 0, supplier:"b"}, {val: 3, supplier:"A"}, {val: 5, supplier:"c"} ];

   var g = {};
   for( var x = 0; x < p.length; x++){
      if(!p || !p[x] || p[x].supplier === void(0)){ continue; }
      if( g[p[x].supplier]){
          g[p[x].supplier].push( p[x] );
          continue;
       }
      g[p[x].supplier] = [p[x]];
    }

关于javascript - 如何改造具有 1 个具有特定属性的核心对象的 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53984889/

相关文章:

Javascript 使用 this.function 会导致 'has no method' 错误

javascript - react 传递新 Prop

javascript - 为 AJAX 序列化表单值

java - 一般情况下如何实现JsonSerializer的序列化?

ios - 无法从字符串获取 JSON

ios - Swift 4 - 使用 Codable 协议(protocol)解析 JSON(嵌套数据)

javascript - 如何扩展动态导入的模块?

node.js - 为什么最新的 Angular CLI 有损坏的包?

angular - 如何将带问号的查询参数从其他网站传递到Angular 6 Spa

angular - 在 Angular 6 中滚动结束时禁用按钮