如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性

Add propertie to object if property exists in another object using lodash

本文关键字:属性 添加 对象 一个对象 于另 lodash 存在 如果      更新时间:2023-09-26

我有两个对象,我需要根据与另一个对象的属性匹配向一个对象添加属性:

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'
                },
            },.....
        ]

我想补充一点:

"visible":false,
"type": 'hidden',

tableCols对象data其中属性与 dependsOn 中的属性匹配。

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

使用 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"数组中单个对象的输出示例:

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