javascript - 编写我的 Array.prototype.flat() 版本
问题描述
var each = function(collection, iterator) {
if (Array.isArray(collection)) {
for (var i = 0; i < collection.length; i++) {
iterator(collection[i], i, collection);
}
} else {
for (var key in collection) {
iterator(collection[key], key, collection);
}
}
};
var flatten = function(nestedArray, result) {
var result = [];
each(nestedArray, function(element) {
console.log(element);
if (!Array.isArray(element)) {
result.push(element)
} else {
flatten(element)
}
})
return result;
};
flatten([1, 2, [3]]);
我正在编写我自己的 flatten 版本,它应该通过返回一个新数组来展平给定的数组,该数组只有一个数组中的值,没有嵌套。我解决了这个问题,如果给定数组中的一个元素是嵌套的,那么将它插回flatten
. 例如,当我的程序到达[3]
输入的索引 2[3]
时,它会在 flatten 中作为参数,它nestedArray
在函数中采用 的值。然后它应该遍历nestedArray
对象并检查它是否element
是一个数组。在通过将[3]
每个元素记录到屏幕的情况下,我看到它[3]
确实进入了flatten
函数并具有值3
作为结果。这个价值应该被推入我的result
变量,但我只得到[1, 2]
. 我不明白为什么,但我怀疑它被推入的结果变量不是包含所有先前被推入的元素的原始结果变量?
解决方案
推荐阅读
- javascript - 检查 url 并从中获取参数以形成元素
- java - 远程和分布式对象的类比
- ios - 使用 AppsFlyer 和 React Native 启动 Universal Link 时未调用 continueUserActivity
- flutter - 如何在不编辑 Flutter 中的装饰的情况下将 suffixIcon 添加到 TextFormField?
- python - 如何在数组的元素中找到第n次出现,然后在python中用零替换第n次出现后的数字
- python-3.x - 如何在 Django 中通过 FileField 上传 NamedTemporaryFile
- c++ - 指向子类是模板类的基类的共享指针
- python - 就像 cv2.boundingrect 一样,围绕从 mediapipe 手部界标检测返回的所有点创建一个矩形
- javascript - 为什么在 React-Router-Dom 的路由器中需要“历史”?
- java - NullPointerException:尝试调用虚方法bottomnavigation.BottomNavigationView.setOnNavigationItemSelectedListener