从文件夹中获取多个图像并将图像名称保存到json数组

时间:2014-10-16 10:41:17

标签: javascript node.js

我试图找到文件夹中的图片。 使用此代码我会得到图像的名称和图像总数。

之后我需要将它保存到json数组中。为此

我试过report[tests[0]].screenshot = PNGs[i];如果在文件夹中只找到一个图像,它就可以正常工作。 如果找到多个图像我试过

  report[tests[0]].screenshot +i  =  PNGs[i]; 

但我得到了[ReferenceError: Invalid left-hand side in assignment]

common.getFilesInFolder(reportDir, '.png', function(err, PNGs) {
        if(!err && PNGs.length > 0){
          for(var i=0; i< PNGs.length; i++){
            report[tests[0]].screenshot +i  =  PNGs[i]; 

          }
        }
        callback(null, report);
      });

如果在下面的文件夹中只找到一个图像,则代码正常工作,没有任何错误

common.getFilesInFolder(reportDir, '.png', function(err, PNGs) {
        if(!err && PNGs.length > 0){         
            report[tests[0]].screenshot =  PNGs[0];
        }
        callback(null, report);
      });

如果有多个图片,我如何使用此代码进行保存..

2 个答案:

答案 0 :(得分:1)

将该行更改为:

report[tests[0]]['screenshot' + i] = PNGs[i];

正如消息所说,你不能在作业的左侧那样使用表达式。

答案 1 :(得分:1)

此声明引起的错误(正如您所假设的那样):

report[tests[0]].screenshot +i  =  PNGs[i]; 

这部分:

report[tests[0]].screenshot

...是报告[tests [0]]中存在的对象的属性“屏幕截图”。您在工作示例中为其指定了一个值(PNGs [i])。如果属性“screenshot”尚未存在,则由于动态对象的性质,它将在此语句之后。该值变为PNGs [i],如果已经存在,则覆盖之前的“屏幕截图”值。

现在出错了,是“+ i”部分。一旦你声明“报告[测试[0]]。截图”,任务的左侧就会变成“报告[测试[0]]。截图”中的任何值,无论是null还是先前分配的PNG。所以你实际做的是:

null + i = PNGs(i)

...或者如果已存在某个值:

SomePNGInstance + i = PNGs(i)

...这是不可能的,因为你只能将i添加到另一个整数/浮点数,而不是对象实例。然后你将PNGs(i)分配给null或NaN或者+ i语句评估的任何内容,(抱歉,暂时没有编写JavaScript - 这是一个通用的编码错误),这是一个无效的赋值。

这两种情况都会导致您看到的错误。 我建议只使用array.push()逐步用图像填充数组,或使用类似myPNGArray [i] = PNGs(i)的东西。