Итак, у меня есть веб-приложение, которое выполняет базовую аналитику некоторых импортированных пользователем данных.Это позволяет пользователю отображать столбцы, а мы показываем свойства на карте, показываем различную статистику по свойствам и т. Д.
Мы добавляем функцию, которая зависит от конкретного сопоставленного столбца, и когда я собираюсьиз-за этого я не могу понять вывод и почему у меня возникнет проблема.Соответствующая функция ниже.Я передаю ему список объектов и удаляю данные, связанные с единым полем.ТАК картография.Предположим, что это «Address», а mapping.field может быть, например, «Street Address» в CSV.
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);
}
}
}
Моя проблема в том, что консоль.Логи не имеют никакого смысла для меня.
- mapping.guess = 'Адрес', как и ожидалось
- data = Мой начальный массив, как и ожидалось
- Первые данные [i] [mapping.guess] = Адресиндивидуального свойства, как и ожидалось
- Вторые данные [i] [mapping.guess] = null, как и ожидалось
- data = My Initial Array UNCHANGED
Я не понимаю, почему элемент массива не проверяет свое значение.Есть идеи.Я также не знаю, как data [i] [mapping.guess] в массиве правильно возвращается в цикле.В конечном итоге в растерянности, так как я устанавливаю значение на ноль, то он возвращает ноль.Почему значение в массиве не будет нулевым после цикла?
Edit: ... думаю, я понял это.Думаю, что console.log немного асинхронный.Адрес восстанавливается в следующем событии unbind, и при печати он восстанавливается из других данных.Не понимал, что console.log может отложить результаты.