从数组中删除最后一项和前面的未定义条目

时间:2018-09-13 08:55:04

标签: javascript arrays

美好的一天,

我正在尝试从JavaScript中的数组中删除最后一个项目,并且将其之前的所有undefined值删除,直到该数组中的项目不再是undefined为止。

var arr = [1, 2, 3, 4, 5, undefined, 6, undefined, undefined, 7]
 for (;;) {
   var lastItem = arr.pop();
   if (lastItem !== undefined && arr.length >= 0) {
     doStuff(lastItem);
     break;
   }
 }

使用上面的代码片段在数组中的预期元素将是: [1, 2, 3, 4, 5, undefined, 6]-完美。但是:

我想摆脱无限循环,也要避免递归,while(true)或类似的东西。但是,我被困在这里了,在使用arr.pop()之后如何找到尾随的未定义条目并将其删除?我不能使用arr.compact()-因为我依靠undefined之后的5来保持原样:我不想删除'false'值。

6 个答案:

答案 0 :(得分:0)

这是您要寻找的吗?

var arr = [1, 2, 3, 4, 5, undefined, 6, undefined, undefined, 7]

 const lastItem = arr.pop();
 for (let i = arr.length-1; i>=0; --i) {
   if(arr[i]===undefined) arr.pop();
   else break;
 }
 
 console.log(arr)

答案 1 :(得分:0)

在最后一个元素未定义的情况下进行循环:

var arr = [1, 2, 3, 4, 5, undefined, 6, undefined, undefined, 7]

let lastItem = arr.pop();
while(arr[arr.length - 1] == undefined && arr.length){
    arr.pop();
    lastItem = arr[arr.length - 1];
}
console.log(arr)

答案 2 :(得分:0)

array.pop时使用lastItem = undefined

var arr = [1, 2, 3, 4, 5, undefined, 6, undefined, undefined, 7];
arr.pop();
while(arr[arr.length-1] == undefined && arr.length>0) arr.pop();
console.log(arr);

答案 3 :(得分:0)

var arr = [1, 2, 3, 4, 5, undefined, 6, undefined, undefined, 7];

var result = arr.slice(0, (arr.indexOf(undefined) == -1 ? arr.length : arr.indexOf(undefined) + 2));

console.log(result);

答案 4 :(得分:0)

您可以通过更改数组的length来删除最后一个元素,并检查最后一个元素是否为undefined。然后继续操作,直到不再有undefined个值为止。

var array = [1, 2, 3, 4, 5, undefined, 6, undefined, undefined, 7];

do ; while (--array.length && array[array.length - 1] === undefined)

console.log(array);

答案 5 :(得分:0)

嘿。。它的可爱很简单。 上面的示例为您解决了。

 Array.prototype.clean = function(deleteValue) {
  for (var i = 0; i < this.length; i++) {
    if (this[i] == deleteValue) {         
      this.splice(i, 1);
      i--;
    }
  }
  return this;
};

var arr = [1, 2, 3, 4, 5, undefined, 6, undefined, undefined, 7]

arr.clean(undefined)
arr.pop()

说明

  1. 首先创建一个原型函数以删除提供的元素。
  2. 将创建的clean函数用于数组。使用clean函数从[arr]数组中删除[undefined]值。
  3. 使用pop()函数弹出最后一个元素。

就这么简单。希望这会有所帮助