我试图找到文件夹中的图片。 使用此代码我会得到图像的名称和图像总数。
之后我需要将它保存到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);
});
如果有多个图片,我如何使用此代码进行保存..
答案 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)的东西。