javascript 从数组中移除最后一项(并且不返回项)

hfsqlsce  于 2023-04-04  发布在  Java
关注(0)|答案(7)|浏览(96)

我的当前数组:abc = ['a', 'b', 'c', 'd'];
我理解.pop() remove并返回数组的最后一项,因此:abc.pop(); = 'd'
但是,我想删除最后一项,并返回数组。因此它将返回:
['a', 'b', 'c'];
有JavaScript函数可以实现吗?

nqwrtyyt

nqwrtyyt1#

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

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

gajydyqb2#

这样做

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

编辑:已经指出,这实际上返回了一个新数组(尽管具有相同的变量名)。
如果你想返回相同的数组,你就得自己创建函数

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

at0kjp5o3#

在表达式中,使用逗号运算符。
(文件:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator// thx @零)

(abc.length--, abc)    

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

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

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

呼叫

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

你可以用菊花链:

abc.removeLast().sort();
rur96b6h

rur96b6h4#

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

f0brbegy5#

是的,你想要的是更一般的“过滤器”功能。
它接受一个函数并返回通过测试函数的所有内容,下面是一个例子:

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

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

6ovsh4lw6#

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']
bybem2ql

bybem2ql7#

要更改JavaScript中pop()方法的默认行为,必须更改pop方法的prototype
Array.prototype.pop = function() {
    this.length = this.length - 1
    return this
}
const abc = ['a', 'b', 'c', 'd'];
console.log(abc.pop());
你也可以用你的自定义oputput创建另一个Array方法,比如removeLast
Array.prototype.removeLast = function() {
    this.pop()
    return this
}

如果你不想改变全局输出,最好在pop()之后记录你的数据

const abc = ['a', 'b', 'c', 'd'];
   abc.pop()
   console.log(abc);

相关问题