如何在循环中使用shift
How do I use shift inside a loop?
当我运行这段代码时:
var a = ['a','b','c'];
var b = ['a','b','c'];
for(i = 0; i <= a.length-1; i++){
b.shift();
console.log(b);
}
我期望这个输出:
['b','c']
['c']
[]
但是我得到这个输出:
[]
[]
[]
为什么?
我如何得到我期望的输出?
这是Chrome中已知的问题。这是因为console.log
不会复制你想要显示的内容,它只是存储引用。
由于日志不会立即更新,但是一旦你的函数结束并且浏览器更新了用户界面,日志将显示b
变量的当前状态,而不是每次console.log
调用时的状态。
要获得所需的输出,您必须为每个console.log
调用创建变量状态的flash副本:
console.log(b.toString());
这是console.log
语句在执行时不打印的副作用。注意,如果将console.log
替换为alert
,代码将按预期工作。
或者将log参数更改为表达式,如我对Javascript Funky array mishap的回答
console.log ('' + b);
相关文章:
- jQuery:循环一个具有不同超时值的循环
- 在循环中分配json值时,值被覆盖
- 如何在下面的ES6循环中获得前面的文本
- 为什么“;未定义的“;在JavaScript中结束循环
- Javascript循环不会自我更新
- 如何使用jquery处理php循环通过元素
- 而循环只设置php中输入字段中的第一个值
- 循环遍历数组中的特定索引
- Javascript返回值只在循环中返回一次
- 按照选项卡索引的顺序循环一个jQuery选择
- 循环遍历以数组为值的Javascript对象
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 循环结束/推送到数组之前在页面上呈现EJS
- 循环比赛位置算法
- jQuery循环在特定位置暂停
- 如何在循环中使用shift
- 使用shift()和push()来循环数组值vs.使用计数器变量,哪种方法最好?
- Jquery shift以循环方式生成按钮值