我不能替换数组中对象的值:
var uploadedProductPhotos=[]; //global
后来我将另一个数组复制到该数组:
uploadedProductPhotos=input.files;
并打印它以检查确实我是否在阵列中获得了正确的3个文件。 然后,我尝试替换第一个元素:
uploadedProductPhotos[0]=input.files[0];
console.log(uploadedProductPhotos[0]);
console.log(input.files[0]);
console.log(uploadedProductPhotos);
前2个日志将显示前一个文件和新文件
(input.files[0]
),但最后一个日志将显示原始数组,因此第一个元素保持不变,而不是被console.log(input.files[0]);
答案 0 :(得分:0)
我显然没有真正复制数组。 通过将每个元素分别添加到数组来解决:
uploadedProductPhotos.push(input.files[k]);
或者可以通过使用slice
函数复制数组来解决。
答案 1 :(得分:0)
您可以尝试使用es6语义,而不是单独推送元素。
uploadedProductPhotos=[...input.files]
它将所有文件推送到var uploadedProductPhotos
答案 2 :(得分:0)
您有几种选择如何替换索引中的项目: -使用推送功能, -使用slice函数(带有正确的参数), -使用rest参数获取新值