我正在做一个下载一些图像并将其保存在手机记忆库中的应用程序。但有时候图像列表会发生变化,所以我需要删除那些不再需要的图像。为此,我有一个json包含我的所有数据,包括当前的图像名称,我想比较我存储在手机中的图像和我的json上的图像。当它发现图像与json的图像不匹配时,它会删除它。
deleteImages(){
let img = false;
const x = this.state.data.monuments.length-1;
const y = this.state.data.monuments[x].monuments.length-1;
const z = this.state.data.monuments[x].monuments[y].pois.length-1;
return (
RNFS.readDir(RNFS.DocumentDirectoryPath)
.then( result => {
result.map((r, index) => {
this.state.data.monuments.map((i, indexCategorias) => i.monuments.map((j, indexMonuments) => {
if (r.name == j.image_md5 + '.jpg'){
img = true;
}
j.pois.map((k, indexPois) => {
if (r.name == k.image_md5 + '.jpg'){
img = true;
}
if (indexCategorias==x && indexMonuments==y && indexPois==z && img == false){
RNFS.unlink(r.path)
.then(() => {
console.log('FILE DELETED');
})
.catch((err) => {
console.log(err.message);
});
}
if(indexCategorias==x && indexMonuments==y && indexPois==z && img == true){
img = false;
}
})
}))
}) //end of map function
}) //end of .then(result)
)
} //end of deleteImages
我的代码正在运行,但我这样做的方式非常糟糕。使用RNFS库我有一种方法'存在'如果在目录中存在或不存在确定的字符串,那么地图函数上是否有类似的东西?喜欢map.exist ou map.has?我只是想让我的代码更有效率。