javascript - 使用拼接从数组中删除元素
问题描述
假设我有一个回应
我正在循环它并将 pic.id 推送到 files 数组
files = []
response.data[0].pics.forEach(function(pic, i){
let div = makeButtons(response.data[0].pics, files, imgPrevEdit);
files.push(pic.id);
});
所以推入文件数组后会变成这样
制作按钮功能用于使用拼接功能删除数组上的某个元素
makeButtons: function(file, store, elem) {
let button = document.createElement("button");
button.classList.add('position-absolute','x', 'rounded-circle');
button.type = "button";
button.innerHTML= "x";
button.addEventListener('click', () => {
elem.removeChild(div);
store.splice(store.indexOf(file), 1);
});
let div = document.createElement("div");
div.classList.add('col', 'mt-2');
div.appendChild(button);
return div;
},
但是,当我单击按钮时,它总是从文件数组的末尾开始,它找不到特定的键并将其删除
知道如何解决吗?
解决方案
它总是从文件数组的末尾开始
我认为这是因为store.indexOf(file)
返回-1
。在这种情况下拼接
将从数组末尾开始很多元素(原点 -1,意味着 -n 是倒数第 n 个元素的索引,因此等效于 array.length - n 的索引)
为什么store.indexOf(file)
退货-1
?因为您response.data[0].pics
作为file
参数传递,但实际上您将其推送pic.id
为:files
store
let div = makeButtons(response.data[0].pics, files, imgPrevEdit);
files.push(pic.id);