Я пытаюсь получить некоторые данные, отфильтровать их, построить массив объектов и затем преобразовать их в строку. я вставил в console.logs, чтобы выяснить, что происходит безрезультатно!
log 1: [7] // массив с 7 объектами в нем
log 2: "[]" // это строковая версия, только две скобки
log 3: [0] // после его анализа он перезапускает пустой массив.
Мне нужен массив в stingform, чтобы сохранить его в AsyncStorage.
Это для реактивного приложения, которое должно быть «поддерживающим» приложением к существующему решению .NET.
Это мой выбор:
fetchCallHistory = async () => {
let calls = [];
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.READ_CALL_LOG,
{
title: "Call Log Example",
message: "Access your call logs",
buttonNeutral: "Ask Me Later",
buttonNegative: "Cancel",
buttonPositive: "OK"
}
);
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
CallLogs.load(200).then(function(history) {
let todayMinus10 = new Date().getTime() - 864000000;
let filterDate = history.filter(history => {
return parseInt(history.timestamp) >= `todayMinus10;`;
});
let filterByType = filterDate.filter(history => {
return history.rawType < 3;
});
for (let i = 0; i < filterByType.length; i++) {
calls.push(filterByType[i]);
}
});
} else {
console.log("Call Log permission denied");
}
} catch (error) {
console.log(error);
}
console.log("log 1: ");
console.log(calls);
return (stringifiedCalls = JSON.stringify(calls));
};
вот где я это называю:
async componentDidMount() {
const callHistory = await this.fetchCallHistory();
console.log("log 2: ");
console.log(callHistory);
let parsedHistory = JSON.parse(callHistory)
console.log("log 3: ");
console.log(parsedHistory);
if (callHistory !== null) {
this.setState({ callLogs: callHistory, isLoading: false });
}
}
ожидаемый результат:
log 1: [7] // массив с 7 объектами в нем
log 2: // массив преобразован в строку со всем ее содержимым
[{"rawType":1,"type":"INCOMING","dateTime":"17. jun. 2019 09:11:19","timestamp":"1560755479695","name":null,"duration":2698,"phoneNumber":"########"}, ..... ]
log 3: [7] // тот же массив, с которого я начал
фактический результат:
log 1: [7] // массив с 7 объектами в нем
log 2: "[]" // это строковая версия, только две скобки
log 3: [0] // после разбора возвращает пустой массив. РЕДАКТИРОВАТЬ: это не должно быть проанализировано здесь на данный момент, он настроен сейчас для тестирования