关于使用insert与removeAt方法交换列表元素位置的逻辑疑问
代码逻辑详解
先看初始代码:
var list = [1, 2]; list.insert(1, list.removeAt(0));
这行代码的执行顺序是先计算函数参数,再调用主函数,拆解成两步看就清晰了:
第一步:执行
list.removeAt(0)
这个方法会删除数组索引为0的元素(也就是1),同时返回被删除的元素1。此时原数组list变成了[2]。第二步:执行
list.insert(1, 1)
这里的insert方法是在数组的索引1位置插入元素1。因为当前数组list只有一个元素(索引0是2),索引1刚好是数组的末尾位置,插入后数组就变成了[2, 1],完成了两个元素的位置交换。
你之前的理解有误:代码不是先执行插入再执行移除,而是先完成移除操作拿到要移动的元素,再把这个元素插入到目标位置。
内容的提问来源于stack exchange,提问作者baha zou
相关产品推荐
相关产品推荐

