javascript - 如何使用 forEach-Loop 将数组的内容转为另一个数组?
问题描述
我想知道我的代码有什么问题。如标题中所述,我想将带有 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.
出了什么问题?
解决方案
好的,所以问题是您forEach
的平均运行oldArray
length
次数为 5 次 为什么会发生这种情况?这是因为您正在弹出forEach
改变长度和数据的值forEach
。
console.log(oldArray);
您可以通过输入来检查forEach
。
var arrayA = ["h", "e", "l", "l", "o"];
var arrayB = [];
function copyArray(oldArray, newArray) {
var length = oldArray.length;
for (var i = 0; i < length; i++) {
var storeElement = oldArray.pop();
newArray.push(storeElement);
};
console.log(oldArray + " old array");
console.log(newArray + " new array");
}
copyArray(arrayA, arrayB);
var reverseArray = ["h", "e", "l", "l", "o"].reverse();
console.log("reverse array");
console.log(reverseArray);
推荐阅读
- ios - 在没有主机应用程序的情况下进行单元测试时,我将文件放在哪里?
- python - Python 代码输入验证字典
- javascript - 图例未在 Maps Javascript API 中显示图标
- javascript - React - 使用状态之外的函数设置组件状态,这是错误的吗?
- validation - 表单验证 - 字段 X 必须是数字
- angularjs - 如何在量角器中使用非角度登录页面测试 angularjs 应用程序
- sql - SQL 访问 - 使用顶部命令缺少一些数据
- python - 为什么 EC2 需要这么长时间来执行这些 SQLite 查询?
- assembly - 添加(汇编)指令不像我认为的那样工作
- php - 有时用 mysqli 没有查询结果