无法替换数组中对象的值:
var uploadedProductPhotos=[]; //global
稍后,我将另一个数组复制到此数组中:
uploadedProductPhotos=input.files;
并打印它,以检查--实际上是--我在数组中得到了正确的3个文件。然后我尝试替换第一个元素:
uploadedProductPhotos[0]=input.files[0];
console.log(uploadedProductPhotos[0]);
console.log(input.files[0]);
console.log(uploadedProductPhotos);
前两个日志将显示前一个文件和新文件(input.files[0]
),但最后一个日志将显示原始数组,因此第一个元素保持不变,不被console.log(input.files[0]);
打印的元素替换。
发布于 2019-04-29 06:25:50
显然,我一开始并没有真正复制数组。通过将每个元素单独添加到数组中来解决:
uploadedProductPhotos.push(input.files[k]);
也可以用slice
函数复制数组来求解。
发布于 2019-04-29 06:27:27
您可以尝试使用es6语义,而不是单独推送元素。
uploadedProductPhotos=[...input.files]
它将所有文件推送到var uploadedProductPhotos
中。
发布于 2019-04-29 09:20:49
如何替换索引上的项有以下几个选项:-使用推函数、-使用片函数(带有正确的参数)、-使用rest参数表示新值
https://stackoverflow.com/questions/55897872
复制相似问题