【发布时间】:2020-02-21 22:03:48
【问题描述】:
我正在尝试编写一个名为 slice 的函数,它接受一个数组和两个数字。
该函数应返回一个新数组,其中的元素从第一个数字的索引开始,一直到第二个数字的索引。
如果没有将第三个参数传递给函数,则默认情况下它应该切片直到数组的末尾。
如果第三个参数大于数组的长度,则应该切到数组的末尾。
function slice(s, n, m) {
let a = [];
a = s.splice(n, m);
if(m === undefined || m > s.length) {
a = s.splice(n, s.length);
}
return a;
}
let s = [1, 2, 3, 4, 5];
slice(s, 1, 7);
output []
更新:
感谢大家的帮助;我知道了!!! 快乐的舞蹈
function slice(arr, start, end) {
let result = [];
from = Math.max(start, 0);
to = Math.min(end);
if((!end) || (end > arr.length)) {
for(let i = from; i<arr.length; i++) {
result.push(arr[i]);}
} else {
for(let i = from; i<to; i++) {
result.push(arr[i]);
}
}
return result;
}
slice([1, 2, 3, 4, 5], 2, 4);
【问题讨论】:
-
我建议使用描述性变量名而不是单个字符。
-
@clark 这些不是互斥的。
-
同意 clark 的观点,你需要自己做这件事。不过,我可以给你一些提示:在数组中有一个指向第二个和第三个参数的指针。
-
欢迎来到 SO! It's OK to ask about homework 无论如何,但这里的问题是没有人提出任何问题。 OP,你能多写一点关于你的尝试吗?例如,您为什么使用
splice?你的思考过程是什么?请询问有关您的代码的具体问题。谢谢! -
重新开始 :-)
splice函数修改了一个数组,但slice没有 - 所以你不能使用splice重新发明slice。该练习可能希望您对要放置在新数组中的元素使用循环和一些逻辑测试。
标签: javascript arrays slice