【问题标题】:Using Splice() function, how do I remove specific array elements?使用 Splice() 函数,如何删除特定的数组元素?
【发布时间】:2017-04-20 05:06:14
【问题描述】:

单击图像时,我的代码应该将图像_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() 函数。

        }     
  }); 

});

任何帮助将不胜感激。

【问题讨论】:

  • 请阅读How to Ask。关键词:“搜索和研究”。通过阅读文档来解决自己的问题是微不足道的。

标签: javascript arrays meteor splice


【解决方案1】:

您需要提取数组中包含您的值的索引。 然后使用 splice 从索引中删除该记录。

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

【讨论】:

  • 哇...谢谢!您的代码加上描述非常简单/清晰且易于理解。再次感谢
【解决方案2】:

我认为这里有一个错误:

else if (clickedImage.indexOf(clicked) == 0) {

你应该改为:

else if (clickedImage.indexOf(clicked) != -1) {

这是因为您不知道元素的确切索引。

哦,拼接也错了,你需要找到元素的索引来移除它,像这样:

clickedImagesArray.splice(clickedImage.indexOf(clicked), 1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-03
    • 2014-07-30
    • 2021-09-02
    • 1970-01-01
    • 2021-09-23
    • 2011-10-30
    • 1970-01-01
    • 2012-06-15
    相关资源
    最近更新 更多