jQuery:在所选项目后从数组中删除1项?

时间:2017-12-11 15:46:10

标签: javascript jquery arrays

我根据一些按钮点击创建一个数组。

每次点击一个按钮,我都会得到data-video值并将其添加到数组中。

然后我立即在我添加到我的阵列的每个视频后添加一个额外的视频(intro.mp4)。

这很好用。

现在,如果我点击我点击一次的相同按钮,该项目将从阵列中删除。

这也很好。

但我需要删除我为该特定视频添加的intro.mp4。但是当我尝试我的代码时,它将从我的数组中删除所有intro.mp4项。我只需要在所选项目后删除1。

这是我的代码,可以帮助您更好地理解:

var videoSource = [];

$(document).on('click', '.pSelection', function(e) {

  var vidToAdd = $(this).attr("data-video");

  ///check if its added/////
  if ($(this).hasClass("added")) {

    $(this).removeClass("added");

    e.stopPropagation();

    videoSource = videoSource.filter(x => x != vidToAdd);
    videoSource = videoSource.filter(x => x != 'intro.mp4');

    console.log(videoSource);

  } else {

    $(this).addClass('added');

    videoSource.push(vidToAdd);
    videoSource.push('intro.mp4');

    var videoCount = videoSource.length;

    console.log(videoSource);

    e.stopPropagation();
    $('.buildExDrop').hide();

  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="pSelection" data-video="vid1.mp4">
Video 1
</button>

<button class="pSelection" data-video="vid2.mp4">
Video 2
</button>


<button class="pSelection" data-video="vid3.mp4">
Video 3
</button>


<button class="pSelection" data-video="vid4.mp4">
Video 4
</button>


<button class="pSelection" data-video="vid5.mp4">
Video 5
</button>

我的问题是我理解的这部分代码:

videoSource = videoSource.filter(x => x != 'intro.mp4');

这告诉代码从数组中删除intro.mp4的所有实例。

但我不知道如何在所选项目之后仅定位1以将其删除。

有人可以就此问题提出建议吗?

要测试上面的代码,请点击几个按钮,然后继续查看console.log(); ...

一旦你向阵列添加了几个项目,点击你已经添加的其中一个按钮,看看会发生什么。

2 个答案:

答案 0 :(得分:1)

您可以使用Array#splice()从已知的

索引处开始删除2个条目

&#13;
&#13;
subprocess.call(['taskkill', '/F', '/T', '/PID',  str(self._active_process.pid)])
&#13;
self._active_process.kill()
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以简单地循环videoSource数组,找到需要删除的videoLink索引并将其存储在某个变量中。

var foundIndex = videoSource.indexOf("NAME OR LINK OF THE VIDEO");

然后删除该项并删除该链接旁边的intro.mp4。您可以使用foundIndex + 1

将其删除