【问题标题】:JavaScript: pushing onto an array mapped to an object propertyJavaScript:推入映射到对象属性的数组
【发布时间】:2014-04-05 02:15:39
【问题描述】:

我有一个工作函数可以检查表单中的脏数据并跟踪脏元素是哪个 div 容器的子容器。我试图弄清楚如何将 {element.id:element.value} 对存储/推送到一个对象中,其中键是映射到子 {element.id : element.value} 对数组的 div 容器:

...
var dirtyData = {};
(pseudo) for each element in the form
    //isEditableData() returns the div id if we care about the div, else false
    var divContainer = isEditableData(element);
    if (!divContainer)
        continue;
    (pseudo) if the element is dirty
        cacheDirtyData(dirtyData, divContainer, element.id, element.value);
...

function cacheDirtyData(dataObj, divContainer, elementId, elementValue) {
    //I want to do something like...
    dataObj["'" + divContainer + "'"][] = {elementId : elementValue};
}

我这样做是假设dirtyData 对象是“通过引用”传递的,我可以添加它。我知道这不是理想的代码(没有 ctor 等),但我有一个截止日期,我只是想让这头猪发声。

【问题讨论】:

    标签: javascript arrays object


    【解决方案1】:

    对于您的“缓存”功能:

    function cacheDirtyData (dataObj, divContainerId, elementId, elementValue) {
        if (dataObj.hasOwnProperty(divContainerId)) 
             dataObj[divContainer_ID].push({ elementId: value });
        else 
             dataObj[divContainer_ID] = [{ elementId: elementValue }];
    }
    

    您可以使用 div 容器的 Id 作为您传递给函数的字符串 (divContainerId)。

    【讨论】:

    • 当我尝试实现这一点时,它会陷入 if - else 的问题。我尝试了一个 try-catch 来查看是否出现错误,它仍然没有显示整个页面,也没有警告任何错误。如果我注释掉 if - else 的内容,页面将正确显示。
    • 修补它,我让它工作了。这是我必须做的才能让它进入 wori:
    • 抱歉,说得太早了。我正在对我的开发环境进行故障排除并刷新浏览器上的脚本,现在它可以工作了。谢谢!
    • 在显示数据时发现更多错误,然后在这里找到答案:http://stackoverflow.com/questions/2873163/is-this-javascript-object-literal-key-restriction-strictly-due-to-parsing。为了让它正常工作,我必须创建元素对象 (var dirtyElement = {}; dirtyElement[elementId] = elementValue;),然后将它与 dataObj (dataObj[divContainer].push(dirtyElement)) 一起使用。
    猜你喜欢
    • 1970-01-01
    • 2018-12-14
    • 2020-11-09
    • 2020-02-10
    • 2012-01-23
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多