[英]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.