当前位置: 首页 > 知识库问答 >
问题:

如何删除数组中索引前后的元素

姜乐家
2023-03-14

我有一个数组:

[[], [0], []. [3], [], [6], []]

这些元素位于使用可拖动JS的vue组件中。Draggable有两个属性@start和@end。当我拖放数组中的元素时,将触发。每当我拖动其中的一个元素时,我都想移除当前元素前后的空数组。所以当我拖动[6]时,数组应该是这样的:

[[], [0], []. [3], [6]]

isVisible在@start处触发,所以每当我选择一个元素时。如何移除数组中索引前后的元素?我以为用切片?

isVisible (val, index) {
   if (val[0] === 6) {
   this.array.splice(this.array[index - 1], 1)
   this.array.splice(this.array[index + 1], 1)
}

共有2个答案

荆哲
2023-03-14

另一种方法是筛选原始数组,然后返回一个包含所需数据的新数组:

null

js lang-js prettyprint-override">let arr = [ [], [0], [], [3], [], [6], [] ];
console.log('Source:'+arr);

function filterDragged(dragged, arr) {
  return arr.filter((e,i,a)=>{
    if ((a[i] && a[i].length==0) &&
        (a[i+1] && a[i+1].length!=0 && a[i+1][0]===dragged))
      return false;

    if ((a[i] && a[i].length==0) &&
        (a[i-1] && a[i-1].length!=0 && a[i-1][0]===dragged))
      return false;

    return true;
  });
}

console.log('Result:'+filterDragged(6, arr));
console.log('Result:'+filterDragged(3, arr));
仲元凯
2023-03-14

移除before元素后,所有剩余元素的索引都会下移,因此After元素现在位于index,而不是index+1

要避免这个问题,最简单的方法就是移除元素after first。

isVisible (val, index) {
    if (val[0] === 6) {
        this.array.splice(this.array[index + 1], 1)
        this.array.splice(this.array[index - 1], 1)
    }
}

注意,如果这是循环的一部分,则循环索引将需要向下调整,以反映当前索引之前的元素已经被移除。

 类似资料:
  • 问题内容: 我在数组上遇到了麻烦。我有一个要修改的数组,如下所示。我想通过索引删除它的元素(元素),然后重新索引数组。可能吗? 问题答案:

  • 我有一个数组 我想从数组中删除最后一行。我使用了pop()函数,但它只返回最后一条记录,而不是返回除最后一条记录之外的完整数组。 此外,我尝试了拼接方法,如下所示。 我无法得到结果。谁能告诉我用什么方法与数组来实现结果? 我想要的结果是

  • 我只需要数组Ex中的前两个索引:

  • 问题内容: 我有一个数组例如: 谁能告诉我如何从数组中删除一个元素。例如,我要删除项目“ b”,以使数组如下所示: 我找不到解决办法。到目前为止,我在这里发现的内容不适用于我:( 问题答案: 您不能从数组中删除元素。Java数组的大小是在分配数组时确定的,不能更改。您能做的最好的事情是: 在相关位置分配给数组;例如 这给您带来了处理值所在数组中的“孔”的问题。(在某些情况下,这不是问题……但是在大

  • 我有一个二维数组,其中最后的元素是空的。这样地: 现在我想删除空元素,并获得正确的新大小。长度 我试着这样做,但不起作用: 有什么好办法吗?

  • 问题内容: var arr = [1,2,3,5,6]; 删除第一个元素 我想删除数组的第一个元素,使其变为: 删除第二个元素 扩展这个问题,如果我想删除数组的第二个元素以使其变为: 问题答案: 要获得更灵活的解决方案,请使用该功能。它允许您根据索引值删除数组中的任何项目: