数组不会替换索引处的值

时间:2019-04-29 06:14:07

标签: javascript

我不能替换数组中对象的值:

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]);

中打印的内容替换

3 个答案:

答案 0 :(得分:0)

我显然没有真正复制数组。 通过将每个元素分别添加到数组来解决:

uploadedProductPhotos.push(input.files[k]);

或者可以通过使用slice函数复制数组来解决。

答案 1 :(得分:0)

您可以尝试使用es6语义,而不是单独推送元素。

uploadedProductPhotos=[...input.files]

它将所有文件推送到var uploadedProductPhotos

答案 2 :(得分:0)

您有几种选择如何替换索引中的项目: -使用推送功能, -使用slice函数(带有正确的参数), -使用rest参数获取新值