如何在JavaScript集合中搜索多个词组之间的第一次匹配?

时间:2018-08-18 05:16:47

标签: javascript

如何在集合中搜索多个词组之间的首次出现?给定下面的示例测试代码,第一个条件将始终获胜,但是一旦我在while循环中发现短语中的第一个匹配项(与标记中的位置有关),我便要搜索该集合并结束搜索

<HTML>
<head>
</head>
<body>
<script>
function getAppDecision(){
var myCollection = document.getElementsByClassName('main');
var i = myCollection.length;
console.log("  myCollection.length : " + i);
while(i--) {
    if (myCollection[i].innerText.search(/opened accounts/i) > -1) {
        console.log("==> spot 1 - open accounts");
        return;
    }
    if (myCollection[i].innerText.search(/being reviewed/i) > -1) {
        console.log("==> spot 2 - being reviewed");
        return;
    }
    if (myCollection[i].innerText.search(/verify your funding account/i) > -1) {
        console.log("==> spot 3 - verify");
        return;
    }
}
};
</script>
<div class="main">
<span id="firstSpan">
    <p> testing Being Reviewed</p>
    <p> testing Opened Accounts</p>
    <p> testing have Verify YOUR Funding account</p>
 </span>
</div>
<script>
getAppDecision();
</script>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

您的myCollection将不会获得您要查找的值。您可能需要更改代码以使其具有以下功能:

var myCollection = [];
document.querySelectorAll('#firstSpan p')
   .forEach((elem) => myCollection.push(elem.innerText));

然后,您可以使用find()

  

find()方法返回数组中第一个元素   满足提供的测试功能。否则未定义是   返回。

它将在满足条件的第一个元素上停止。

您可以这样做:

var result = myCollection.find((item) => {
   return (item.search(/opened accounts/i) > -1)
          || (item.search(/being reviewed/i) > -1)
          || (item.search(/verify your funding account/i) > -1);
});

然后,根据您的示例,result的值应为testing Being Reviewed