【发布时间】:2023-03-02 21:23:01
【问题描述】:
有一个练习我无法绕开。 我需要编写一个函数来模拟 underscore.js 函数 _.each() 以产生相同的结果并通过以下测试:
- 应该遍历一个数组
- 应该迭代一个对象
- 应该忽略对象原型
- 应该访问原始集合
- 如果通过则应该绑定到上下文
- 应该返回集合
这是给定的空函数:
_.each= function (collection, iteratee, context) {}
这是我到目前为止所写的,没有通过任何测试:
_.each = function (collection, iteratee, context) {
if (Array.isArray(collection)) {
for (let key of collection) {
console.log(key, collection.keys());
}
} else {
for (let prop in collection) {
if (collection.hasOwnProperty(prop)) {
console.log(`${prop}: ${collection[prop]}`);
}
}
}
return collection
};
我在这里尝试做的是使用 for of 循环遍历数组,并使用 for in 循环遍历对象,忽略对象原型属性。 我其实并不想有问题的解决方案,也不想有具体的代码,只是往正确的方向推动,然后自己找到解决方案。 我对 JS 很陌生,我承认我真的想不出办法来面对这个问题。任何建议将不胜感激。 谢谢
【问题讨论】:
-
退货收集应该很容易吧? .绑定函数?其余的似乎已经存在
-
绑定函数我什至没有开始写它,因为它一直告诉我所有测试都失败了,所以我首先想修复函数以至少通过前三个测试:应该迭代一个数组应该迭代一个对象应该忽略对象原型
-
我怀疑它未能通过某些测试,因为您实际上并没有使用
iteratee并且测试正在利用该参数来检查您的结果。
标签: javascript underscore.js each