javascript – 如何防止这个最后的“破坏条件”被推送到数组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何防止这个最后的“破坏条件”被推送到数组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1541字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 如何防止这个最后的“破坏条件”被推送到数组](/upload/InfoBanner/zyjiaocheng/729/9ec331bba60b46a596f2ea3a00e2b296.jpg)
我正在动态切片一个数组,我可以通过简单地用arr.pop()删除最后一个元素来获得我想要的功能但是我想知道为什么我的while循环在我的数组中将它添加到我的数组时它会破坏我的条件.
slices(num){
let arr = [this.digits.slice(0, num)]
let i = 0
if (this.digits.length < num){
throw new Error('Slice size is too big.')
} else {
while (arr[i].length === num){
i++
arr.push(this.digits.slice(i, num + i))
}
// arr.pop() - removed for testing
return arr
}
}
这是一个例子.假设我们要切片这个数组:
this.digits = [ 3, 1, 0, 0, 1 ]
理想情况下,我们的输出将如下所示:
[3, 1, 0], [1, 0, 0], [0, 0, 1]]
使用我当前的代码并且不使用arr.pop(),我的算法将一直潜入一个额外的切片迭代,其长度小于我的条件要求的长度(在这种情况下,num == 3)
这将是我的输出:
[[3, 1, 0], [1, 0, 0], [0, 0, 1], [0, 1]]
我知道有很多方法可以做到这一点,但为此,我想保持我的代码的完整性,所以使用我的实现的解决方案将是伟大的:D
编辑:我明白为什么要添加最后一个元素.由于元素在满足条件之前(它的长度等于num),它会继续下一次迭代,但是如何在不使用.pop()的情况下雄辩地处理它
编辑:谢谢大家的答案!他们似乎都会工作,但Peter B的实施非常干净,特别是考虑到他为我改变了几行,它就像一个魅力.再次感谢!
解决方法:
你正在检查错误的状态.最好计算你要在一段时间内添加多少个子阵列(除了你开始使用的子阵列),并计算到那个数字,如下所示:
var digits = [3, 1, 0, 0, 1];
function slices(num) {
let arr = [this.digits.slice(0, num)]
let i = 0
if (this.digits.length < num) {
throw new Error('Slice size is too big.')
} else {
var sliceCutoff = this.digits.length - num;
while (i < sliceCutoff) {
i++
arr.push(this.digits.slice(i, num + i))
}
return arr
}
}
console.log(slices(3));
内容总结
以上是互联网集市为您收集整理的javascript – 如何防止这个最后的“破坏条件”被推送到数组全部内容,希望文章能够帮你解决javascript – 如何防止这个最后的“破坏条件”被推送到数组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。