如何解决for循环使我在某些数字上不确定,并且基本的for循环工作正常为什么是这样?
有人可以向我解释这种奇怪的行为吗?当我使用for循环时,似乎是控制台记录了2,5,但其余未定义。但是,第二个代码块中的普通for循环基本上会打印出所有数字。非常感谢!
function sort(arr){
let items=arr.slice()
console.log(items)
for(let i of items){
console.log(items[i])
for(let j of items){
if(items[j]<items[i]){
// console.log(items[j])
// console.log(items[i])
let tmp = items[i]
// console.log(tmp)
items[j]=items[i]
// console.log(items[j])
items[i]=tmp
// console.log(items[i])
}
}
}
return items;
}
let items = [4,1,5,3,2]
let sortItems = sort(items)
//VS//
function sort(arr){
let items=arr.slice()
console.log(items)
for(let i = 0;i<items.length;i++){
console.log(items[i])
for(let j of items){
if(items[j]<items[i]){
// console.log(items[j])
// console.log(items[i])
let tmp = items[i]
// console.log(tmp)
items[j]=items[i]
// console.log(items[j])
items[i]=tmp
// console.log(items[i])
}
}
}
return items;
}
let items = [4,2]
let sortItems = sort(items)
解决方法
for..of
遍历数组中的值,而不是其索引。例如,您会发现代码执行失败的时间很早
let items = [4093,1633,511,364,2642]
(例如,列表中的值不为0..4)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。