如何使用lodash js检查字符串是否存在于数组中?

7

我的代码片段大致如下:

let go = "hello";

let col =["12","hello","14","15"];

let f = _.some(col,go);

我想检查go值是否存在于TRUE/FALSE列中。 当我运行此命令时,我得到了" f=false?"的输出。如何解决这个问题或者如何使用lodash检查一个字符串在一个字符串数组中的存在?


我不知道为什么有人会对这个问题点踩 ._. - Rick Calder
2
请不要使用 Lodash。使用原生 JS。你不需要依赖库来完成这个,它已经内置在核心语言中了。 - rockerest
3个回答

29

4

只需使用 JavaScript,您就可以使用indexOf。如果存在元素,则返回该元素的索引,否则返回-1。

let go = "12";
let col = ["12", "hello", "14", "15"];
var isElemPresent = (col.indexOf(go) !== -1) ? true : false
console.log(isElemPresent)


问题是关于lodash的。 - DivineCoder
1
@A.Lau 这个问题也有JavaScript标签。如果你在使用Loadash,那么什么都不会阻止你使用JavaScript。请查看Loadash库中如何实现include函数。 - brk
1
我宁愿专注于回答其他问题,而不是澄清。谢谢。 - brk
1
@brk 这段代码之所以被 downvote,是因为 === 1。这会使得对于 '12''14''15' 都返回 false - Phil
1
col.indexOf('12') returns 0 which means it certainly is present. If col contains "hello" at position #3, this will return false even though "hello" is certainly present. Naming your variable isPresent does not fit with what your code is doing. If you want it to be completely accurate, you should name it isHelloPresentAtExactlyTheSecondIndex - Phil
显示剩余8条评论

0

看起来您误解了_.some的最后一个参数。您不能将其用作相等性测试的值,而是需要自己创建一个,如下所示:

let f = _.some(col, function(go) {return go === "hello"});

这里有一个可用的Fiddle

或者,您可以使用es6魔法并直接从数组中调用includes,如下所示:

let go = "hello";

let col =["12","hello","14","15"];

alert(col.includes(go))


这也可以通过子字符串搜索: 让 f = _.some(col, function(go) { return go.toLowerCase().indexOf("he".toLowerCase()) }); - vpalmu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接