我正在创建一个函数,该函数返回一个包含所有元素的数组,直到但不包括给定索引处的元素。
function getElementsUpTo(array, n) {
var output = [];
for (var i=n; i < array.length; i++){
output.push(array[i]);
}
return output;
}
var output = getElementsUpTo(['a', 'b', 'c', 'd', 'e'], 3)
console.log(output); // --> must be['a', 'b', 'c'] but its displaying [c, d, e]
正如您所看到的那样,它必须返回[&#39; a&#39;,&#39; b&#39;,&#39; c&#39;]但它显示[c,d,e]。 有什么想法吗?
答案 0 :(得分:3)
为什么不在javascript中使用切片?这非常方便。
你的起始指数是'n',即你在这里出错了很明显。 使用你的逻辑
function getElementsUpTo(array, n) {
var output = [];
for (var i=0; i < n; i++){
output.push(array[i]);
}
return output;
}
var output = getElementsUpTo(['a', 'b', 'c', 'd', 'e'], 3)
console.log(output);
使用切片方法,它更简单
arr = ['a','b','c','d','e']
var output = arr.slice(0,3)
相同的输出,但只有2行
答案 1 :(得分:1)
您从需要停留的位置开始,而不是从数组的开头开始。此外,您需要在n
之前停在索引处function getElementsUpTo(array, n) {
var output = [];
for (var i=0; i < n; i++){ //need to start at index 0, and stop at index n-1
output.push(array[i]);
}
return output;
}
var output = getElementsUpTo(['a', 'b', 'c', 'd', 'e'], 3)
console.log(output); // --> ['a', 'b', 'c']
答案 2 :(得分:1)
罪魁祸首就是这条线:
for (var i=n; i < array.length; i++){ // ... rest of code
似乎你的函数返回第一个第n个元素。因此索引必须从第一个开始,即0。循环条件应为i < n
,以便循环停止在第n个循环。这意味着最后一个循环将是第(n-1)个循环,这很好,因为我们始终从0开始。所以最终的代码应该是这样的:
for (var i = 0; i < n; i++){
答案 3 :(得分:1)
您使用n作为阅读的起点。 你想要的东西是这样的:
function getElementsUpTo(array, n) {
var output = [];
for (var i=0; i < n; i++){
output.push(array[i]);
}
return output;
}
供将来参考:
1)数组项从数组[0]开始,然后到数组[length-1]
2)你放入的'i'获取数组中该位置的项目。
ie:array [0] =&gt;在你的情况下'a'。
因此,从i = n开始,你告诉数组从位置n开始,并且i&gt; array.length告诉它继续直到结束。 (记住数组[array.length]会抛出一个越界错误,因为数组从0开始,而不是从1开始。)