在不使用array.pop()函数内置

时间:2018-11-23 20:11:34

标签: javascript arrays

我正在尝试解决一个问题,该问题涉及不使用内置的.pop函数而删除数组的最后一项。这是个完整的问题...

编写一个接受数组的函数。

该函数应删除数组中的最后一个值,如果数组为空,则返回删除或未定义的值。

请勿使用内置的Array.pop()函数!

示例:

var arr = [1, 2, 3, 4];
pop(arr); // 4

我想出了如何使用以下代码获取最后一个数字,但这显然不能解决问题。

function pop (array){
  for (i=array.length-1; i>array.length-2; i--){
    array = array[i]
  } return array
} 
pop ([1,2,3,4])

谢谢!

6 个答案:

答案 0 :(得分:4)

一个更简单的解决方案是将数组的长度减少一。无需创建第二个数组。

ssl.cert=<path to yourdomain.crt>
ssl.cert.key=<path to yourdomain.der>
ssl.host=yourdomain

答案 1 :(得分:2)

在这种情况下,看起来简单更好:

const example = [1,2,3,4];

function pop(arr) {
  return arr && arr.splice(-1)[0]
}
console.log(pop(example))
console.log(pop(example))
console.log(pop(example))
console.log(pop(example))
console.log(pop(example))

// edge case: should it return undefined or should it throw?
console.log(pop())

答案 2 :(得分:0)

编辑::其中包括空检查和空检查。

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

function pop(array) {
  return array && array.splice(-1)[0]
}

console.log(pop(array));
console.log(pop(array));
console.log(pop(array));
console.log(pop(array));
console.log(pop(array));
console.log(pop(array));
console.log(array);

答案 3 :(得分:0)

我认为您正在寻找的是Array.prototype.slice()。您可以使用数组的length属性确定它是否为空,然后使用slice返回最后一个条目。

const example = [1,2,3,4];
const emptyExample = [];

const pop = group => group.length > 0 
  ? group.slice(group.length - 1)[0]
  : undefined;

const answers = [ pop(example), pop(emptyExample) ];
console.log(answers);

从评论中编辑

示例应在返回最后一个条目的同时从数组中删除,因此Array.prototype.splice在这里可能是更好的功能。

const example = [1,2,3,4];
const emptyExample = [];

const pop = group => (Array.isArray(group) && group.length > 0) 
  ? group.splice(group.length - 1, 1)[0]
  : undefined;

const initialExample = [ ...example ];
const answers = [ 
  pop(example), 
  pop(emptyExample), 
  { initialExample, updatedExample: example, emptyExample } 
];
console.log(answers);

答案 4 :(得分:0)

  

Array.prototype.splice(start [,deleteCount [,item1 [,item2 [,...]]]])

     

splice()方法通过删除现有元素和/或添加新元素来更改数组的内容。
  ...
  返回值:包含已删除元素的数组。如果仅删除一个元素,则返回一个元素的数组。如果没有删除任何元素,则返回一个空数组。

     

-https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

这意味着,只要函数的输入是Array的实例,我们就可以调用sqlcode删除最后一个元素。如果没有元素,这将返回一个空数组。因为我们总是会得到一个包含一个元素的数组或一个空数组,所以我们可以使用Array#splice(-1)访问第一个元素。如果数组为空,则为[0]

因此,请检查该输入是否为数组,然后返回undefined(如果不是)或Array#splice(-1)[0](如果不是)。

undefined

答案 5 :(得分:-1)

您可以使用Array.splice()

function pop(arr) {
    return arr.splice(-1)[0];
}

这将删除数组中的最后一项并返回它。