繁体   English   中英

Lodash比较/合并对象到数组

[英]Lodash compare/merge object to array

我需要使用Lodash比较/合并具有不同结构的2个对象。

   data= [
      {
        "name": "EMPRESA",
        "value": ""
      },
      {
        "name": "DESIGEMPRESA",
        "value": "CMIP"
      },
      {
        "name": "UTILIZADOR",
        "value": ""
      },
      {
        "name": "CD_INDICADOR",
        "value": ""
      },
      {
        "name": "DT_INI_INDICADOR",
        "value": ""
      },
      {
        "name": "DT_INI",
        "value": "2017-12-13"
      },
      .....
    ]

dbcolsData={
  "EMPRESA": "",
  "UTILIZADOR": "paulo.figueiredo",
  "CD_INDICADOR": "",
  "DT_INI_INDICADOR": "",
  "DT_INI": "",
  "DT_FIM": ""
}

问题是我如何用dbcolsData的值填充data的值? 可以说将dbColsData的值dbColsData data

尝试这样的事情:

_.forEach(data, function(object){
   object.value = dbcolsData[object.name];
})

使用Array#map (或lodash的_.map() )来迭代data ,并从dbcolsData获取结果:

 var data = [{"name":"EMPRESA","value":""},{"name":"DESIGEMPRESA","value":"CMIP"},{"name":"UTILIZADOR","value":""},{"name":"CD_INDICADOR","value":""},{"name":"DT_INI_INDICADOR","value":""},{"name":"DT_INI","value":"2017-12-13"}]; var dbcolsData = {"EMPRESA":"","UTILIZADOR":"paulo.figueiredo","CD_INDICADOR":"","DT_INI_INDICADOR":"","DT_INI":"","DT_FIM":""}; var result = data.map(function(o) { return Object.assign({ data: dbcolsData[o.name] }, o); }); console.log(result); 

data缩减为dbcolsData结构:

var myData = data.reduce((o, nvO) => Object.defineProperty(o, nvO.name, {value: nvO.value}), {})

- >

现在您可以使用lodash比较函数,如_.isEqual

_.isEqual(myData, dbcolsData)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM