如何将新图像拼接到数组中与我要删除的图像所在的相同位置并显示该图像

How do I splice a new image into an array in the same position that the image that I want to remove is in and to display this image

我有一组图像。每个图像都是可点击的,并生成 message.The 个图像,这些图像位于随机数组中。这一切都很好。我未能实现的是以下内容: 当图像被点击时,它变得过时,所以我想用一个新的、不可点击的图像替换可点击的图像。 我尝试使用 array.splice 方法如下 newArray=myImages.splice(evt.target,1,newImage) 这会将新图像放置在新数组中的位置 0 而不是其原始位置,并且不会生成新图像来覆盖旧图像。 如有任何帮助,我将不胜感激。

如果我们猜测newArray=myImages.splice(evt.target,1,newImage)中的evt是一个Event对象,evt.target是一个DOM元素,不是一个索引。如果这是在您描述的点击事件中,它将是被点击的图像。

splice 的第一个参数是要进行更改的索引;一个号码。 DOM 元素不是数字。

splice 也 returns 一组已删除的图像,而不是更新的图像。 (与 mapslice 等方法不同,splice 会修改您调用它的数组。)

您可以使用 indexOf 找到上一张图片的索引,然后我们 splice 使用它:

const index = myImages.indexOf(evt.target);
if (index !== -1) {
    myImages.splice(index, 1, newImage);
}

或者您可以使用 map 创建一个新数组,用新图像代替单击的图像:

newArray = myImages.map(img => img === evt.target ? newImage : img);