【发布时间】:2013-12-16 18:44:55
【问题描述】:
我当前的数组:abc = ['a', 'b', 'c', 'd'];
我理解.pop() 删除并返回数组的最后一项,因此:abc.pop(); = 'd'
但是,我想删除最后一项,然后返回数组。所以它会返回:
['a', 'b', 'c'];
有这方面的 JavaScript 函数吗?
【问题讨论】:
标签: javascript arrays
我当前的数组:abc = ['a', 'b', 'c', 'd'];
我理解.pop() 删除并返回数组的最后一项,因此:abc.pop(); = 'd'
但是,我想删除最后一项,然后返回数组。所以它会返回:
['a', 'b', 'c'];
有这方面的 JavaScript 函数吗?
【问题讨论】:
标签: javascript arrays
pop() 函数还从数组中删除最后一个元素,所以这就是你想要的(Demo on JSFiddle):
var abc = ['a', 'b', 'c', 'd'];
abc.pop()
alert(abc); // a, b, c
【讨论】:
这样做
abc = abc.splice(0, abc.length-1)
编辑:已经指出这实际上返回了一个新数组(尽管具有相同的变量名)。
如果要返回相同的数组,则必须创建自己的函数
function popper(arr) {
arr.pop();
return arr;
}
【讨论】:
在表达式中,使用逗号运算符。
(文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator//感谢@Zero)
(abc.length--, abc)
// expl :
(abc.length--, abc).sort();
或者在一个函数中,最方便的是将它设置在数组原型上:
Array.prototype.removeLast = function () {
this.length--;
return this;
}
调用
var abc = ['you', 'and', 'me'];
abc.removeLast();
你可以菊花链:
abc.removeLast().sort();
【讨论】:
Array.prototype.popAndReturnArray = function( ){
this.pop();
return this;
}
【讨论】:
是的,你想要的更普遍的是“过滤”功能。
它接受一个函数并返回通过测试函数的所有内容,这是一个示例:
abc = ['a', 'b', 'c', 'd'];
abc.filter(function(member,index) { return index !== abc.length - 1; });
【讨论】:
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']
【讨论】: