我正在尝试解决一个问题,该问题涉及不使用内置的.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])
谢谢!
答案 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];
}
这将删除数组中的最后一项并返回它。