【发布时间】:2018-06-01 16:17:25
【问题描述】:
我想知道我的代码有什么问题。 如标题中所述,我想将带有 for 循环的数组的内容转到另一个数组。我想使用 ES5,因为我还不习惯 ES6+。
这是我的代码:
var arrayA = ["h","e","l","l","o"];
var arrayB = [];
function copyArray(oldArray, newArray) {
oldArray.forEach(function() {
var storeElement = oldArray.pop();
newArray.push(storeElement);
});
console.log(oldArray + " old array");
console.log(newArray + " new array");
}
copyArray(arrayA, arrayB);
结果是:
"h,e,l,l old array"
"o new array"
"h,e,l old array"
"o,l new array"
"h,e old array"
"o,l,l new array"
"h,e FINAL old array"
"o,l,l FINAL new array"
但应该是:
"" FINAL old array
"o, l, l, e, h" FINAL new array.
出了什么问题?
【问题讨论】:
-
let ary = ["h","e","l","l","o"].reverse();怎么样? -
为什么不直接使用.reverse()
-
好吧。我对此一无所知。:D 我刚刚体验过 shift()、pop()、unshift() 和 push()。但无论如何;为什么我的代码方法不起作用?我想我有一个普遍的误解,为什么这个 forEach-Loop 没有正确运行,因此这个错误的有效解决方案也可以解决其他问题。
-
我的猜测是它不起作用,因为 array.foreach() 终止太快,因为你正在修改 oldArray 的长度,而 array.foreach() 正在迭代它
标签: javascript arrays foreach ecmascript-5