从数组中删除最后一项(而不是返回项)

时间:2013-11-30 19:51:21

标签: javascript arrays

我当前的数组:abc = ['a', 'b', 'c', 'd'];

我理解.pop()删除并返回数组的最后一项,因此:abc.pop(); = 'd'

但是,我想删除最后一项,然后返回数组。所以它会回归:

['a', 'b', 'c'];

这是否有JavaScript函数?

6 个答案:

答案 0 :(得分:4)

pop()函数也会从数组中删除最后一个元素,所以这就是你想要的(Demo on JSFiddle):

var abc = ['a', 'b', 'c', 'd'];
abc.pop()
alert(abc); // a, b, c

答案 1 :(得分:2)

Array.prototype.popAndReturnArray = function( ){
   this.pop();
   return this;
}

答案 2 :(得分:2)

使用逗号运算符在表达式中

(文件:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator // thx @Zero)

(abc.length--, abc)    

// expl :
  (abc.length--, abc).sort();

或者在函数中,最方便的是将它设置在Array原型上:

 Array.prototype.removeLast = function () {
       this.length--;
       return this;
 }

调用
var abc = ['you', 'and', 'me'];
abc.removeLast(); 

你可以菊花链:

abc.removeLast().sort();

答案 3 :(得分:1)

这样做

abc = abc.splice(0, abc.length-1)

编辑:已经指出这实际上会返回一个新数组(尽管具有相同的变量名)。

如果你想返回相同的数组,你必须自己创建函数

function popper(arr) {
   arr.pop();
   return arr;
}

答案 4 :(得分:0)

是的,你想要的更通常是“过滤”功能。

它需要一个函数并返回通过测试函数的所有内容,这是一个例子:

abc = ['a', 'b', 'c', 'd'];

abc.filter(function(member,index) { return index !== abc.length - 1; });

答案 5 :(得分:0)

Splice 和 pop 都会返回被移除的元素。它们会改变原始数组,但如果您正在寻找一个函数返回没有删除元素的数组,请使用 slice。这样您就可以链接调用。

let abc = ['a', 'b', 'c', 'd'];
abc = abc.slice(0, -1)
  .map(value => value += value);
console.log(abc);
// prints ['aa', 'bb', 'cc']