因此,我有一个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);
}
}
}
我的问题是控制台。日志对我来说没有任何意义。
我不明白为什么数组项没有检查其值。有任何想法吗。我也不知道数组中的data [i] [mapping.guess]如何在循环中正确返回。最终不知所措,因为我将值设置为null,然后它返回null。为什么循环后数组中的值不为空?
编辑:...以为我知道了。认为console.log有点异步。该地址在以下“ unbind”事件中重建,并且在打印时从其他数据中重建。没意识到console.log可能会延迟其结果。
答案 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] = {};