使用 Splice() 函数,如何删除特定的数组元素?
Using Splice() function, how do I remove specific array elements?
单击图像时,我的代码应该将图像 _id
详细信息添加到 clickedImagesArray
数组。它成功地做到了这一点。但是,当再次单击图像时,我的代码无法将其从 clickedImagesArray
数组中删除。
在下面找到我的代码:
"click .image": function (event) {
var clickedImage = [this._id];
var clicked = this._id;
var clickedImagesArray = Session.get('clickedImages');
clickedImage.forEach(function (clicked){
//#### If no duplcate then push()
if (clickedImage.indexOf(clicked) ==-1) {
alert("NOOOO Duplicates!" + clicked);
clickedImagesArray.push({imageId: clicked});
}
else if (clickedImage.indexOf(clicked) == 0) {
//#### Else when duplcate found delete duplicate
alert("Found Duplicates!" + clicked);
clickedImagesArray.splice({imageId: clicked});
我感觉我没有正确使用 splice() 函数。
}
});
});
如有任何帮助,我们将不胜感激。
我认为这里有一个错误:
else if (clickedImage.indexOf(clicked) == 0) {
你应该改为:
else if (clickedImage.indexOf(clicked) != -1) {
这是因为您不知道元素的确切索引。
哦,而且拼接也错了,需要找到元素的index去掉,像这样:
clickedImagesArray.splice(clickedImage.indexOf(clicked), 1);
您需要提取数组中包含您的值的索引。
然后使用拼接从索引中删除该记录。
splice(startIndex, deleteCount)
startIndex: 是您要从中开始删除的索引
deleteCount:要删除的记录数,从startIndex
开始
// find the index of the imageId in the array.
var index = clickedImage.indexOf(clicked);
// if item is found in the array remove it.
if (index !== -1) {
// remove one item starting from the index.
clickedImage.splice(index, 1);
}
阅读 MDN 中的文档。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
单击图像时,我的代码应该将图像 _id
详细信息添加到 clickedImagesArray
数组。它成功地做到了这一点。但是,当再次单击图像时,我的代码无法将其从 clickedImagesArray
数组中删除。
在下面找到我的代码:
"click .image": function (event) {
var clickedImage = [this._id];
var clicked = this._id;
var clickedImagesArray = Session.get('clickedImages');
clickedImage.forEach(function (clicked){
//#### If no duplcate then push()
if (clickedImage.indexOf(clicked) ==-1) {
alert("NOOOO Duplicates!" + clicked);
clickedImagesArray.push({imageId: clicked});
}
else if (clickedImage.indexOf(clicked) == 0) {
//#### Else when duplcate found delete duplicate
alert("Found Duplicates!" + clicked);
clickedImagesArray.splice({imageId: clicked});
我感觉我没有正确使用 splice() 函数。
}
});
});
如有任何帮助,我们将不胜感激。
我认为这里有一个错误:
else if (clickedImage.indexOf(clicked) == 0) {
你应该改为:
else if (clickedImage.indexOf(clicked) != -1) {
这是因为您不知道元素的确切索引。
哦,而且拼接也错了,需要找到元素的index去掉,像这样:
clickedImagesArray.splice(clickedImage.indexOf(clicked), 1);
您需要提取数组中包含您的值的索引。 然后使用拼接从索引中删除该记录。
splice(startIndex, deleteCount)
startIndex: 是您要从中开始删除的索引
deleteCount:要删除的记录数,从startIndex
// find the index of the imageId in the array.
var index = clickedImage.indexOf(clicked);
// if item is found in the array remove it.
if (index !== -1) {
// remove one item starting from the index.
clickedImage.splice(index, 1);
}
阅读 MDN 中的文档。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice