我正在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].
答案 0 :(得分:2)
为了未来读者的利益,解决这个问题的一种可能方法是:
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
个对象。
从实际角度来看,内置方法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
答案 1 :(得分:1)
检查该阵列的长度:
function slasher(arr, howMany) {
return arr.slice(howMany);
}
console.log(slasher([1, 2, 3], 2)); // should return [3].
console.log(slasher([1, 2, 3], 0)); // should return [1, 2, 3].
console.log(slasher([1, 2, 3], 9)); // should return [].
console.log(slasher([1, 2, 3], 4)); // should return [].
console.log(slasher(["burgers", "fries", "shake"], 1)); // should return ["fries", "shake"].
console.log(slasher([1, 2, "chicken", 3, "potatoes", "cheese", 4], 5));// should return ["cheese", 4].
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;