Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays typescript Promise-在映射的对象数组中保持更改_Arrays_Ionic Framework_Promise_Capacitor - Fatal编程技术网

Arrays typescript Promise-在映射的对象数组中保持更改

Arrays typescript Promise-在映射的对象数组中保持更改,arrays,ionic-framework,promise,capacitor,Arrays,Ionic Framework,Promise,Capacitor,如果文件目录文档(ios)中存在一个或多个文件,我尝试替换对象数组中键/值项的值(文件路径);否则,只需原封不动地返回数组 阵列 const currentItems = this.data; const filenames = [val, val, ...]; //for循环 for (let filename of filenames) { //文件系统API;允诺 Plugins.Filesystem.stat({ path:filename+'.

如果文件目录文档(ios)中存在一个或多个文件,我尝试替换对象数组中键/值项的值(文件路径);否则,只需原封不动地返回数组

阵列

   const currentItems = this.data;
   const filenames = [val, val, ...];
//for循环

   for (let filename of filenames) {
//文件系统API;允诺

    Plugins.Filesystem.stat({
      path:filename+'.jpeg',
      directory: FilesystemDirectory.Documents
    }).then((result) => {
//返回文档目录中文件的路径(简化)

//映射数组

      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===filename-持续存在

所需更换:

const filenames = ["uncle"]; 
[{“lineone”:“nagybácsi”,“linetwo”:“叔叔”,“linethree”:“/assets/imgs/logo.png”}]


[{“lineone”:“nagybácsi”,“linetwo”:“叔叔”,“linethree”:“电容器”\uu/var/mobile/Containers/Data/Application/D95D4DEF-A933-43F1-8507-4258475E1414/Documents/nagybácsi.jpeg”}

如果我理解清楚,你需要这样的东西:

使用
阵列#过滤器
阵列#部分
阵列#映射

const wantedImagePath=''u电容器/uvar/mobile/Containers/Data/Application/D95D4DEF-A933-43F1-8507-4258475E1414/Documents/nagybácsi.jpeg';
常量文件名=[“叔叔”];
常数someData=[
{
“lineone”:“ikertestvérek;ikrek”,
“第二行”:“双胞胎”,
“第三行”:“../assets/imgs/logo.png”
},
{
“lineone”:“nagybácsi”,
“第二行”:“叔叔”,
“第三行”:“../assets/imgs/logo.png”
},
{
“一号线”:“nőtlen(人)”,
“第二行”:“未婚”,
“第三行”:“../assets/imgs/logo.png”
},
{
“lineone”:“bar”,
“第二行”:“foo”,
“第三行”:“/some/demo/path/logo.png”
}
];
const modifed=someData.filter(x=>filename.some(y=>y==x.linetwo)).map(z=>({…z,linethree:wantedImagePath}));

console.log(modifid)
Hi,您能提供示例和演示数据吗?你所拥有的和你所需要的。谢谢。用户可以拍照,然后将照片链接到字符串。说:“玫瑰”-用户为玫瑰拍照。然后我在一个离子模板中显示字符串rose和rose的图片。如果在文件目录中找不到图片,将显示一个dummy.jpeg。我的需要是生成刚刚拍摄并保存到filedirectory的图片的路径,并替换数组中的虚拟路径。Usind.fileSystem API。我的意思是提供一个基本示例,而不是真实的数据。。。像const filenames=[somedata]const result=[myresult]?使用这个fiddle更新它,就像我在上一篇文章中所说的。是的,谢谢。我会尽力理解其中的逻辑。它是否适用于多个文件名:例如,叔叔、双胞胎的图片,但不适用于未婚者?换言之:使用循环(文件名的文件名)。谢谢,这已经非常接近完美了。我最后的需要:如果我做了“for(fileNames的文件名)”-叔叔,阿姨-那么在多个条目中进行第三行更改,这在不覆盖“叔叔”更改的情况下工作。我认为它应该与此代码一起工作,只是询问。抱歉,无法回答,因为我需要更多信息和更多代码。。。一个建议是,尝试使用
映射
过滤器
减少
一些
每个
。。。。方法并将其组合在一起,而不是循环的
。。。。这是一种更好的方法,无需改变数据和减少代码。如果您有任何问题,请尝试理解我的解决方案。祝你好运,投票吧。谢谢
const filenames = ["uncle"];