【发布时间】:2019-01-01 09:47:02
【问题描述】:
我试图在 if 条件下替换对象数组中键/值条目的值(文件路径),文件目录 Documents 中存在一个或多个文件(ios 电容器离子);否则,只返回原样的数组。
数组
const currentItems = this.data;
const filenames = [val, val, ...];
// for 循环
for (let filename of filenames) {
// 电容 FileSystem API;承诺
Plugins.Filesystem.stat({
path:filename+'.jpeg',
directory: FilesystemDirectory.Documents
}).then((result) => {
//返回Documents目录中文件的路径(简化)
const result.uri = this.imagepath;
// 映射数组
const newItems = this.currentItems.map(e => {
// 如果条目匹配,则设置键 'linethree' 的值
if (e.lineone === filename) {
return {
...e,
linethree: this.imagepath
}
}
//否则,原样返回e
else
return { ...e,}
});
}).catch( reason => {
console.error( 'onRejected : ' + reason );
})
}
问题:
在每次迭代中 - 文件名的文件名 - 原始数组再次映射 - 使用其原始值;因此每次迭代都会覆盖上一次迭代的变化。
如何实现每个匹配项的键“linethree”处的值条目 - e.lineone === 文件名 - 持续存在?
想要的替换:
const filenames = ["uncle"];
[{"lineone":"nagybácsi","linetwo":"uncle","linethree":"./assets/imgs/logo.png"}]
[{"lineone":"nagybácsi","linetwo":"uncle","linethree":"_capacitor_/var/mobile/Containers/Data/Application/D95D4DEF-A933-43F1-8507-4258475E1414/Documents/ nagybácsi.jpeg"}]
【问题讨论】:
-
嗨,你能提供演示数据的例子吗?你所拥有的和你需要的结果。谢谢。
-
用户可以拍照,然后该照片将链接到一个字符串。说:“玫瑰” - 用户为玫瑰拍照。然后我在离子模板中显示字符串玫瑰和玫瑰图片。如果在文件目录中没有找到图片,则会显示一个 dummy.jpeg。我的需要是生成刚刚拍摄的图片的路径并保存到文件目录并替换数组中的虚拟路径.Usind电容器文件系统API。
-
我的意思是提供一个基本的例子,而不是真实的数据...比如 const filenames = [somedata] const result = [myresult] ?
-
使用这个小提琴jsfiddle.net/qn0pvrcf更新它,就像我在上一篇文章中所说的那样。
标签: arrays ionic-framework promise capacitor