打字稿参考问题

时间:2018-09-19 19:11:36

标签: typescript reference

因此,我有一个Web应用程序,它对某些用户导入的数据进行一些基本分析。它允许用户在地图上显示列,我们在地图上显示属性,在属性上显示不同的统计信息,等等。

我们正在添加一个依赖于特定映射列的功能,当我浏览它时,我无法理解输出以及为什么会有问题。相关功能如下。我将对象列表传递给它,并删除与统一字段关联的数据。 SO映射。例如,在CSV中,猜测可能是“地址”,而mapping.field可能是“街道地址”。

deleteMapping(field: string, data?: Array<any>, render?: boolean)
{
    if (!field || typeof field !== 'string')
        throw { message: "delete mapping expects a string parameter"}

    var mapping = this.mapping[field];

    if (!mapping)
        return;

    this.mapping[field] = null;
    this.inverseMapping[mapping.guess] = null;

    if (Array.isArray(data))
    {
        console.log(mapping.guess);
        console.log(data);
        for (var i = 0; i < data.length; i++)
        {
            console.log(data[i][mapping.guess]);
            data[i][mapping.guess] = null;
            console.log(data[i][mapping.guess]);
        }
        console.log(data);

        try
        {
            $("body").trigger("analytics:unbind",{ field: mapping.field, unified: mapping.guess, render: render === undefined ? true : render}); 
        }
        catch (e)
        {
            console.error(e);
        }
    }
}

我的问题是控制台。日志对我来说没有任何意义。

  1. mapping.guess ='地址'符合预期
  2. data =我的初始数组符合预期
  3. 第一数据[i] [mapping.guess] =单个属性的地址符合预期
  4. 第二个数据[i] [mapping.guess] = null符合预期
  5. data =我的初始数组未更改

我不明白为什么数组项没有检查其值。有任何想法吗。我也不知道数组中的data [i] [mapping.guess]如何在循环中正确返回。最终不知所措,因为我将值设置为null,然后它返回null。为什么循环后数组中的值不为空?

编辑:...以为我知道了。认为console.log有点异步。该地址在以下“ unbind”事件中重建,并且在打印时从其他数据中重建。没意识到console.log可能会延迟其结果。

1 个答案:

答案 0 :(得分:0)

棘手的,至少没有完整的代码。

要获得console.log的调试准确性,请将所有console.log调用更改为console.log(JSON.stringify ... ex:

console.log(JSON.stringify(data,null,2)); // dont work with auto referencied objects

没有完整的代码,很难知道。您可以尝试将其设置为undefined或创建一个新对象

data[i][mapping.guess] = {};