2017-06-19 10 views
0

アトリビュートvisibleがfalseと異なるオブジェクトの配列のアトリビュートlabelを返す必要があります。マップとフィルターlodash 3.10.1

例:

{ 
    "EMPRESA": "CMIP", 
    "CD_MAQ": "EXE03", 
    "DT_INI_MAQ": "1900-01-01", 
    "DSP_MAQ": "EXE03", 
    "DSR_MAQ": "EXE03", 
    "RACIO_PARAGEM": null, 
    "ID_MAGNITUDE": "101", 
    "DT_INI_DM": "1900-01-01", 
    "DT_FIM": null, 
    "DT_RowId": "row_CMIPEXE031900-01-01", 
    "DESIGEMPRESA": "CMIP", 
    "DSP_MAGNITUDE": "Metros" 
} 

とオブジェクトの配列:

var tableColumns= [ 
      { 
       "targets": 0, 
       "title": "", //Datatables 
       "label": "", //Editor 
       "data": 'EMPRESA', 
       "name": 'EMPRESA', 
       "width": "", 
       "type": "hidden", //Editor 
       "visible": false, //DataTables 
       "defaultContent": "", 
       "bSearchable": false, 
       "orderable": false 
      }, {.... 

私はセットアップフィドルをしました。前もって感謝します。

答えて

1

私はatribute visiblefalseからdiferentされたオブジェクトの配列のatribute labelを返却する必要があります。

const data = [ 
 
    { label: 'A', visible: false }, 
 
    { label: 'B', visible: true }, 
 
    { label: 'C', visible: true }, 
 
    { label: 'D', visible: false }, 
 
    { label: 'E', visible: true } 
 
] 
 

 
const result = 
 
    data 
 
    .filter(x => x.visible !== false) 
 
    .map(x => x.label) 
 
    
 
console.log(result) 
 
// [ 'B', 'C', 'E' ]


データを複数回介して上記反復

。あなたはこれを避けるしたい場合は、

const data = [ 
 
    { label: 'A', visible: false }, 
 
    { label: 'B', visible: true }, 
 
    { label: 'C', visible: true }, 
 
    { label: 'D', visible: false }, 
 
    { label: 'E', visible: true } 
 
] 
 

 
const mapper = f => 
 
    k => (acc, x) => k (acc, f (x)) 
 
    
 
const filterer = p => 
 
    k => (acc, x) => p (x) ? k (acc, x) : acc 
 
    
 
const tcomp = (tf, tg) => 
 
    k => tf (tg (k)) 
 
    
 
const concat = (xs, ys) => 
 
    xs.concat(ys) 
 
    
 
const transduce = (...ts) => xs => 
 
    xs.reduce (ts.reduce (tcomp, k => k) (concat), []) 
 
    
 
const visibleLabels = 
 
    transduce (filterer (x => x.visible !== false), 
 
      mapper (x => x.label)) 
 
      
 
console.log (visibleLabels (data)) 
 
// [ 'B', 'C', 'E' ]

+1

UAUを伝達することができます! @naomik、ありがとう –

+0

これは完璧なデータです .filter(x => x.visible!== false) .map(x => x.label)ですが、もしあれば! –