Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回部分匹配的索引_Javascript - Fatal编程技术网

Javascript 返回部分匹配的索引

Javascript 返回部分匹配的索引,javascript,Javascript,我遇到了一个javascript问题,当我不希望它这样做时,它的计算结果为true。当indexOf计算rec.name(等于“CSI”)时,它返回true并触发continue行,因为finalArr数组包含一个名为“CSIQ Group”的元素。但是,这不是我想要的,因为我只希望它在数组中找到一个完全匹配的元素时计算为true 下面是代码片段: if(finalArr.join().indexOf(rec.name.toString()) > -1){ cont

我遇到了一个javascript问题,当我不希望它这样做时,它的计算结果为true。当indexOf计算rec.name(等于“CSI”)时,它返回true并触发continue行,因为finalArr数组包含一个名为“CSIQ Group”的元素。但是,这不是我想要的,因为我只希望它在数组中找到一个完全匹配的元素时计算为true

下面是代码片段:

if(finalArr.join().indexOf(rec.name.toString()) > -1){
            continue;
        }
当“CSIQ组”已经在finalArr中时,我可以更改什么来防止“CSI”触发continue行?谢谢

亲切问候,,
Joseph

您可以使用RegExp将字符串精确匹配到
CSI

const pattern=/^CSI$//^-字符串的开始,$-字符串的结束
pattern.test(rec.name.toString())//如果只有“CSI”,则为true,否则为false
如果发现word
CSI
,您可以使用它来修改代码并执行所需操作。

您可以尝试使用,或者在您的情况下,只需执行此操作,甚至可以执行此操作

大概是这样的:

if(最终包括(rec.name){
继续;
}
includes
非常适合于简单的字符串匹配。如果您想要更大的匹配,可以尝试
find
find
将允许您根据特定条件比较数组中的每个元素,并且可以对其执行多个检查

if(!!finalArr.find(element=>(element.toLowerCase()===name.rec.toLowerCase()){
继续;
}

但是,我绝对建议不要将数组转换为字符串并尝试搜索它,尤其是在这种情况下。

不要使用
indexOf
-因为它会找到找到的第一个匹配项的索引。如果您想要等价性,请使用等价运算符:
==
请显示
finalArr
和exac如果你只是在搜索一个数组,可能
[“bar”,“foobar”,“foob”]。包括(“foo”)
=>false。你为什么要加入数组?你是想找出
CSI
[C,S,I,something,something,…][/code>中什么时候等于什么?还是想找到一个元素
['CSI','something',…]
只是想给你一个更好的答案。@Joseph316不用担心,defs来看看我的实际答案,因为我认为使用
includes
非常适合你的情况,而且代码很容易阅读。另外,高度推荐数组的MDN文档,多年来他们教会了我很多关于使用数组的知识。去掉连接是关键-那是我齿轮中的扳手。也谢谢你的额外提示!