如果匹配特定条件,则从数组中删除最后一个元素

时间:2019-11-09 12:29:26

标签: javascript

从数组中删除最后一个与特定值匹配的元素的最佳方法是什么?

例如:

components = dedupeLast(components, '<app-builder-placeholder></app-builder-placeholder>');

function dedupeLast(a, target) {
  for(let i = 0; i < a.length; i++){
    if (i === a.length) {
      if(a[i] === target)
      a.splice(i, 1);
    }
  }
}

3 个答案:

答案 0 :(得分:3)

如果这是您要查找的最后一个元素,那么您根本不需要循环,只需检查数组是否为空,然后直接访问最后一个元素:

function dedupeLast(a, target) {
   if(a.length && a[a.length - 1] === target){
      a.pop();
   }
}

它显示为:如果a不为空(a.length != 0)并且最后一个元素为a[a.length - 1] === target,则使用pop删除最后一个元素。

答案 1 :(得分:1)

如果满足条件,您可以使用pop访问最后一个元素,将其删除,然后再次添加。

function dedupeLast(a, target) {
  
  let temp = a.pop();
  if(temp === target){
    return;
  }
  else{
    a.push(temp);
  }
  
}

答案 2 :(得分:1)

由于 array.splice 创建了一个新的Array并将复制的元素复制到其中,所以我会使用 array.pop 来获得更好的性能。

function dedupeLast(a, target) {
  let temp;
  if(a.length && a[a.length - 1] === target){
    temp = a.pop();
  }
}

Array.prototype.pop()仅删除最后一个元素,然后将其返回。如果您之前检查过,如果该元素等于目标,则无需 pop push 。如果您需要将移除的元素用于其他用途,则可以使用 temp