javascript - 如何制作 _.includes 方法
问题描述
我是一名初级开发人员,已经编码 4 周。
我正在研究一种 JavaScript 方法。
我将向您展示我首先使用的代码。
_.each = function (collection, iteratee) {
if(Array.isArray(collection)===true){
for(let i=0;i<collection.length;i++){
iteratee(collection[i],i,collection)
}
}else{
let objvalues= Object.values(collection)
let objkeys = Object.keys(collection)
for(let i=0;i<objvalues.length;i++){
iteratee(objvalues[i],objkeys[i],collection)
}
}
};
_.includes = function (arr, target) {
let result
_.each(arr, function(a){
if(a === target)
result = true
if (a !== target)
result = false
})
return result;
};
这是一个条件。
如果 _.include 方法与数组中元素找到的值匹配,则必须返回 true。
如果数组中的元素与您要查找的值不匹配,则必须返回 false。
我做了 _include 方法。
如果数组中的元素与你要查找的值不匹配,则返回false为成功。万
如果数组中的元素与您要查找的值匹配,则必须返回 true
这就是你失败的地方。
好像不能返回ture,只返回false。
我该如何处理?
解决方案
问题在这里:
_.each(arr, function(a){
if(a === target)
result = true
if (a !== target)
result = false
})
您result
在每次迭代时重新分配。因此,对 的最终值重要的唯一迭代result
是最后一次迭代。
相反,初始化result
为false
,并true
在找到目标时重新分配给:
const _ = {};
_.each = function(collection, iteratee) {
if (Array.isArray(collection) === true) {
for (let i = 0; i < collection.length; i++) {
iteratee(collection[i], i, collection)
}
} else {
let objvalues = Object.values(collection)
let objkeys = Object.keys(collection)
for (let i = 0; i < objvalues.length; i++) {
iteratee(objvalues[i], objkeys[i], collection)
}
}
};
_.includes = function(arr, target) {
let result = false;
_.each(arr, function(a) {
if (a === target)
result = true
})
return result;
};
console.log(
_.includes([1, 2, 3], 2)
);
一旦找到匹配项,打破循环会更干净,但您_each
并没有为此设置:
const _ = {};
_.each = function(collection, iteratee) {
if (Array.isArray(collection) === true) {
for (let i = 0; i < collection.length; i++) {
iteratee(collection[i], i, collection)
}
} else {
let objvalues = Object.values(collection)
let objkeys = Object.keys(collection)
for (let i = 0; i < objvalues.length; i++) {
iteratee(objvalues[i], objkeys[i], collection)
}
}
};
_.includes = function(arr, target) {
for (const a of arr) {
if (a === target)
return true
}
return false;
};
console.log(
_.includes([1, 2, 3], 2)
);
推荐阅读
- javascript - SetTimeout with Promise.resolve 不是输出字符串而是输出字符串的数值,为什么?
- javascript - 使用带有 inject = true 的 HtmlWebpackPlugin 不会缩小 ES6 代码
- java - 计算地图中重复键值的数量
- python - 如何将默认用户插入文件路径python
- php - 闭包表(移动子树)
- php - 如何以相同的形式包含 2 个文件上传,然后将它们插入 PHP 中的 MYSQL 数据库?
- .htaccess - 如何确认正在使用正确的 Robots.txt 文件?
- swift - 代码连接到情节提要时应用程序崩溃
- c# - .Equal() 测试的流利验证无法按预期工作
- apache-spark - Spark 如何执行 I/O?