Splice方法不从数组中删除项
Splice method not deleting items out of array
我试图实现一个函数,它需要三个参数(min, max, step),并生成从min到max的整数范围,与步骤。第一个整数为最小值,第二个整数为范围的最大值,第三个整数为步长。
下面是它应该看起来像的一个例子:generateRange(2,10,2)应该返回数组[2,4,6,8,10]。
我使用splice方法来删除数组中大于max参数的任何现有元素。
function generateRange(min, max, step) {
var arr = [];
var count = min;
for (var i = 0; i < max / step; i++) {
arr[i] = count;
count = count + step;
arr[i] > max ? arr.splice(i, 1) : arr[i];
}
return arr;
}
console.log(generateRange(2, 10, 2));
每当我console.log
我的结果,我得到一堆逗号后的最后一项…所以它看起来像这样:[2,4,6,8,10,,,,]
它似乎没有删除项目。我错过了什么?谢谢!
三元操作符有点奇怪,因为表达式没有存储。它通过移除太大的值来修复数组。这可以工作一次,但如果有第二次,i将增加,并且通过对arr[i]赋值,数组的长度再次像之前没有执行splice
一样(除了i-1索引处的未定义值)。
最好在赋给超出范围的值之前退出循环。在这种情况下,继续循环是没有意义的。
让count
变量作为循环变量和条件:
function generateRange(min, max, step){
var arr = [];
for(var count = min; count <= max; count+=step){
arr.push(count);
}
return arr;
}
var res = generateRange(2, 10, 2);
console.log(res);
一个不太可读,但更短的ES6版本是:
function generateRange(min, max, step){
return Array.from(Array(Math.floor((max-min)/step)+1), (x,i) => min+i*step);
}
let res = generateRange(2, 10, 2);
console.log(res);
相关文章:
- Mongoose-在更新中删除数组元素
- 在特定索引处剥离/删除数组中的值
- Framework7:使用swipeout删除数组中的项
- Javascript删除数组中某个位置之后的项
- 通过选中和取消选中复选框来添加和删除数组中的值
- 编写删除数组并添加到列表的函数
- Javascript - 删除数组中的重复值
- 在 Kineticjs 中删除数组中的组
- 如何根据数组内容添加/删除数组中的元素
- 用于删除数组中的零的Javascript函数代码
- Javascript-仅使用pop()方法删除数组中的负值
- 删除数组元素并将它们添加回原来的位置
- 如果一个键匹配,如何删除数组元素
- 无法使用拼接删除数组中的元素
- 如何从ko.computed中删除数组项
- 删除数组中的重复项,为什么此代码不起作用
- 使用另一个数组按索引删除数组中的对象
- 在 jquery 中,如何通过索引[“键”] 或值删除数组元素
- 使用 Lodash 删除数组中的元素
- 按索引删除数组元素