代码之家  ›  专栏  ›  技术社区  ›  Himani

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

  •  2
  • Himani  · 技术社区  · 6 年前

    我在json中有1个对象核心,这些对象有supplier属性。还有其他具有相同供应商名称但其他值不同的对象。所以我想把这个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"}]
    .....
    }
    

    2 回复  |  直到 6 年前
        1
  •  1
  •   Edwin Dijas Chiwona    6 年前

    循环浏览所有项目。跳过供应商不存在的错误。

        //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]];
        }
    
        2
  •  0
  •   Muhammad Ahsan    6 年前

    你可以在服务器端完成,这是一个很好的方法,因为服务应该进行数据处理,而angular应用应该关注视图和用户交互。 现在要格式化数据,您可以采取以下步骤。

    1. 获取数组中的所有供应商值,如[“A”、“b”、“c”、“A”]。
    2. 现在创建一个json对象,使用这些值作为键,并将这些对象作为包含相应供应商编号的值进行推送。每个键都将有一个数组作为值,该数组将包含具有相应供应商的相应对象。
    推荐文章