我正在 Freecodecamp 学习 Javascript。这个挑战是从数组头部砍掉 n 个元素。我的代码可以工作,除非以 1 进行切片。
我已经这样做有一段时间了,不幸的是我没有足够的头脑来寻找我自己的解决方案。我觉得最好知道为什么会出错,而不是寻找替代方法。非常感谢。
function slasher(arr, howMany) {
// it doesn't always pay to be first
var newArr = [];
for (i=0; i < arr.length; i++) {
if (arr[i] <= howMany) {
return arr.slice(howMany);
}
else {
return arr;
}
}
}
slasher(["burgers", "fries", "shake"], 1);
expected output
slasher([1, 2, 3], 2) should return [3].
slasher([1, 2, 3], 0) should return [1, 2, 3].
slasher([1, 2, 3], 9) should return [].
slasher([1, 2, 3], 4) should return [].
slasher(["burgers", "fries", "shake"], 1) should return ["fries", "shake"].
slasher([1, 2, "chicken", 3, "potatoes", "cheese", 4], 5) should return
["cheese", 4].
最佳答案
为了 future 读者的利益,解决此问题的一种可能方法可能如下:
function sliceFrom(sequence, n) {
let result = [];
for (let value of sequence)
if (--n < 0)
result.push(value);
if (typeof sequence === 'string')
return result.join('');
return result;
}
console.log(sliceFrom('abcdefg', 3));
console.log(sliceFrom([11,22,33,44,55], 2));
console.log(sliceFrom([11,22,33,44,55], 100));
请注意,由于使用 of
循环,此“切片器”适用于任意序列(或更确切地说“可迭代”值),包括那些没有 .length
属性的序列(例如 Map
或 Set
对象)。
从实用的 Angular 来看,有内置方法Array.slice
和 String.slice
当用一个积极的论点调用时,它正是这样做的。然而,在处理“星体”字符时,例如,我们自制的函数优于。表情符号:
function sliceFrom(sequence, n) {
let result = [];
for (let value of sequence)
if (--n < 0)
result.push(value);
if (typeof sequence === 'string')
return result.join('');
return result;
}
faces = "😂😄😍"
console.log(faces.slice(1)) // not really
console.log(sliceFrom(faces, 1)) // looks fine
关于javascript - 从数组头部取出 n 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49012278/