如何编写一个从undercore.js中模拟_.ech()的函数



有一个练习我无法理解。我需要编写一个函数来模拟undercore.js函数_.ech((,以产生相同的结果,并通过以下测试:

  • 应该遍历数组
  • 应该迭代对象
  • 应忽略对象原型
  • 应访问原始集合
  • 如果传递了一个,则应绑定到上下文
  • 应返回集合

这是空的给定函数:

_.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的新手,我承认我真的想不出办法来面对这个问题。如有任何建议,我们将不胜感激。感谢

这里有一个提示。我希望这能把你推向正确的方向。

_.each = function (collection, iteratee, context) {
// you're going to want something that checks length of arguments and binds context to iteratee here
if (Array.isArray(collection)) {
for (let key of collection) { /* you're gonna need the index later so consider using
for (let i = 0; i < collection.length; i++) {...} */
console.log(key, collection.keys()); // replace this line with calling iteratee with item, i, and collection
}
} else {
for (let prop in collection) {
if (collection.hasOwnProperty(prop)) {
console.log(`${prop}: ${collection[prop]}`); // replace this line with calling iteratee with collection[prop], prop, and collection
}
}
}
return collection
};

通常,Each实现的测试首先创建一个示例函数和一个示例集合,然后对它们调用函数。示例:

var array0 = [1,2,3];
var array1= [];
var iteratee = function (item) {
array1.push(item * 2);
}

当对每个项调用函数时,它将执行指定的操作。因此,在这种情况下,它将每个项乘以2的结果推送到空数组中
上例的预期输出是一个数组1,其中包含[2,4,6]。由于您还没有在调用iteratee时编写该部分,因此在运行测试时,不会发生任何事情。

相关内容

  • 没有找到相关文章

最新更新