Javascript 函数有条件地将变量成员数据分配给对象中的嵌套数组?

Javascript 函数有条件地将变量成员数据分配给对象中的嵌套数组?,javascript,arrays,function,key,Javascript,Arrays,Function,Key,我想将数据添加到对象中,而我的对象包含嵌套数据。示例数据: pageviewEvent { client: "clientName", page { document_referrer: 'some http refer header data goes here', window_height: 1920, window_width: 1200 } } 有些数据未定义或为null,我不想将这些未定义/null数据添加到对象中 我制作了一个函数,可以有条件地

我想将数据添加到对象中,而我的对象包含嵌套数据。示例数据:

pageviewEvent {
  client: "clientName",
  page {
    document_referrer: 'some http refer header data goes here',
    window_height: 1920,
    window_width: 1200
  }
}
有些数据未定义或为null,我不想将这些未定义/null数据添加到对象中

我制作了一个函数,可以有条件地(如果不是未定义的话)向对象添加数据,但我不知道如何向函数中的嵌套对象添加数据?

我可以只做一堆if语句,但我认为最好将条件测试放在函数中以减少代码大小

带有注释的示例代码显示了我正在尝试但不起作用的想法:

//function to check if variable undefined or null, if not -> add to pageviewEvent arrayKey, variableName
function isUndefinedNull(arrayKey, variableName) {

    var evalVariableName = eval(variableName);

    if (evalVariableName !== undefined && evalVariableName !== null && evalVariableName !== "") {
        console.log(arrayKey);
        console.log(variableName);
        pageviewEvent[arrayKey] = evalVariableName;
        //array key could be nested, for instance pageview[page][title] or pageview.page.tile
    }
}

//make event array  
const pageviewEvent = { }

//add static data
pageviewEvent.client = 'neguse';

//if not null or undefined add data   
isUndefinedNull('referrer.full', 'document.referrer');
//want to put data into object pageviewEvent.referrer.full or pageviewEvent[referrer][full]

谢谢你的帮助

我建议使用lodash函数
\uuu.set()
,文档可以在这里找到:


如果要自定义存在未定义值时如何处理嵌套的行为,可以改用
.setWith()
-请参见为什么要传入变量名并
对其求值?你不能直接传递值吗?这是一个很好的补充——一般来说,除非我没有其他选择,否则我永远不会在javascript中使用
eval()
。这是非常不安全的,使代码很难脱毛,而且在javascript指南中通常是禁止的。@glennsl我试图节省空间,在对象中添加50多行代码。var a=some.html/dom.value;很多次。值得考虑的一点是@duncan thacker->可能不值得任何收益来避免xss问题等。找到一个安全的解决方案会很好function@DillonDoyle你的解释毫无意义——只需按值传递变量!
_.set( pageviewEvent, "referrer.full", "some-value" );