2016-05-18 9 views
-1

私は2つのオブジェクトを持っていると私は別の性質から一致に基づいて一つのオブジェクトにプロパティを追加する必要があります:私は追加したいプロパティがlodash使用して別のオブジェクトに存在する場合にオブジェクトへpropertieを追加

var dependsOn= { 
       qTableIdent: { 
        //External object key mapping(object key : external key) 
        'RHID': 'RHID', 
        'CD_AGREGADO': 'NOME' 
       } 
      }, 
var tableCols= [ 
      { 
       "targets": 1, 
       "title": 'RHID', 
       "label": 'RHID', 
       "data": 'RHID', 
       "name": 'RHID', 
       "width": "5%", 
       "filter": true, 
       "defaultContent": "", 
       "visible":false, 
       "type": 'hidden',  //ADD this to properties 
       attr: { 

        'name': 'rhid' 
       }, 
      },..... 
     ] 

を:

dataプロパティが dependsOnでプロパティと一致 tableColsオブジェクトへ
"visible":false, 
"type": 'hidden', 

https://jsfiddle.net/zwpu70no/3/

+0

dependsOnのプロパティとしてもう一度 –

+0

...ネイティブjsソリューションはどうですか? – RomanPerekhrest

+0

が...私は完全にブロックされています –

答えて

0

溶液をObject.keysArray.indexOf関数を使用して:

var dependsOn = { 
     qTableIdent: {'RHID': 'RHID', 'SEQ': 'NOME'}, 
     qTableDocs: {'RHID': 'RHID', 'DOC': 'DOC2'} 
    }, 
    tableCols = [ 
     { 
      "targets": 1, 
      "title": 'RHID', 
      "label": 'RHID', 
      "data": 'RHID', 
      "name": 'RHID', 
      "width": "5%", 
      "filter": true, 
      "defaultContent": "", 
      attr: {'name': 'rhid'} 
     } 
    ], 
    newProps = {"visible": false, "type": 'hidden'}, // new properties to insert 
    dataKeys = []; 

Object.keys(dependsOn).forEach(function(k) { 
    Object.keys(dependsOn[k]).forEach(function(key) { 
     if (dataKeys.indexOf(key) === -1) { 
      dataKeys.push(key); 
     } 
    }); 
}); 
// dataKeys now contains unique keys list: ["RHID", "SEQ", "DOC"] 

tableCols.forEach(function(obj) { 
    if (dataKeys.indexOf(obj['data']) !== -1) { 
    Object.keys(this).forEach((k) => obj[k] = this[k]); 
    } 
}, newProps); 

console.log(JSON.stringify(tableCols, 0, 4));  

console.log(JSON.stringify(tableCols, 0 , 4)); 

'tableCols' 配列内の単一のオブジェクトの出力例:データpropertieが存在tableColsオブジェクトへ

[ 
    { 
     "targets": 1, 
     "title": "RHID", 
     "label": "RHID", 
     "data": "RHID", 
     "name": "RHID", 
     "width": "5%", 
     "filter": true, 
     "defaultContent": "", 
     "attr": { 
      "name": "rhid" 
     }, 
     "visible": false, 
     "type": "hidden" 
    } 
] 
+0

問題はdependsOnがより多くのオブジェクトを持つかもしれないということです。 'var newProps = {" visible ":false、" type ": 'hidden'}; // var dataKeys = Object.keys(dependsOn ['qTableIdent']); (key.indexOf(obj ['data'])!== -1){} o.keys(本).forEach((K)=> O [K] =鍵[K]);} }、newProps); })。 { qTableIdent:{ 'RHID': 'RHID' 'SEQ': 'NOME' }、 qTableDocs:{ } ' –

+0

@LeonelMatiasDomingosは、拡張' dependsOn'構造 – RomanPerekhrest

+0

'DEPENDSONを示し'RHID': 'RHID'、 'DOC': 'DOC2' } } ' –

関連する問題