2016-11-24 8 views
0

私は、次のように私のデータを持っている:構造体が配列ベースの場合、モデルをテーブルにマップする方法は?

{ 
    meta: { 
       format: "csv", 
       info: "desc", 
       columns: [ 
       { 
        id: "Name", 
        type: "Text", 
        length: 32   
       }, 
       { 
        id: "Text", 
        type: "Text", 
        length: 128 
       }] 
      }, 
    rows: [ 
       ["John","xxxx"], 
       ["Alpha","yyyy"], 
       ["Beta","wwww"], 
       ["Gamma","zzzz"]] 
} 

、私はColumnsRowsとしてTableコントロールにレコードをマップするために苦労しています。列はまっすぐ前方、まっすぐなマップのようですが、行は列へのマッピングが不足しているので、何が最も簡単な方法かと思います。

アプローチ手順:

  1. は、各列レコードのcolumn.idからkeys[]してください。元JSONを再作成し、アレイ
  2. {keys[j]:row[k]}
  3. プッシュなどのオブジェクトを作成しますが、私は本当にに苦労していますObjects

Rows配列を置き換えるkeys.lengthながらrows[]

  • 各ループトラバース
  • 、これを特別にrows[]で解析してオブジェクトを作成するときにコードに変換してください。そこには、これを達成するための効率的な方法がなければならないと確信しています。

  • 答えて

    1

    あなたができることは次のとおりです。 Array.mapとforEachを使用します。

    var input = { 
     
        meta: { 
     
        format: "csv", 
     
        info: "desc", 
     
        columns: [{ 
     
         id: "Name", 
     
         type: "Text", 
     
         length: 32 
     
        }, { 
     
         id: "Text", 
     
         type: "Text", 
     
         length: 128 
     
        }] 
     
        }, 
     
        rows: [ 
     
        ["John", "xxxx"], 
     
        ["Alpha", "yyyy"], 
     
        ["Beta", "wwww"], 
     
        ["Gamma", "zzzz"] 
     
        ] 
     
    }; 
     
    
     
    
     
    var columns = input.meta.columns.map((column) => { 
     
        return column.id 
     
    }); 
     
    
     
    
     
    var rows = input.rows.map((row) => { 
     
        var obj = {}; 
     
        row.forEach((column, idx) => { 
     
        obj[columns[idx]] = column; 
     
        }); 
     
        return obj; 
     
    }); 
     
    
     
    input.rows = rows; 
     
    console.log(input);

    +0

    返信のための多くのおかげで。この解決策は、望ましい結果を得るために絶対に有効です。私の質問は、データの前処理を必要とせずに、テーブルのSAPUI5データバインディングで同様の処理を行うスマートな方法があるかどうか疑問に思っています。しかし、それが可能でないなら、私はこれを正しい答えとしてマークします。 – axiomtheorem

    +0

    私はsapui5に関する専門家は全くいません。私はSAPUIでそれを行うより良い方法があれば、答えることはできません。しかし、一般的には、ある構造から別の構造に変換するためにトランスを用意する必要があります。それは、サーバー/クライアントのいずれかである可能性があります。 – Sreekanth

    関連する問題