我一直坚持这样做,因为混合数组+字符串匹配并不是我最好的选择。
我想做的是基于字符串的部分匹配返回数组中的索引号。完整的用例;根据数组中的值检查URL中是否存在文本-并返回数组位置的索引。
不要介意JS或jQuery,但最好的方法是行之有效的(或可行的)。
当前尝试:
示例URL = www.site.com/something/car/123
另一个示例URL可能是www.site.com/something/somethingelse/banana/
(要匹配的代码段的位置并不总是在相同的路径位置)
var pageURL = location.href;
var urlArray = ['/car/','/boat/','/apple/','/banana/'];
function contains(urlArray, value) {
var i = urlArray.length;
while (i--) { if (urlArray[i].indexOf(pageURL)) console.log(i)} console.log('Not Found');}
使用jQuery的替代方法(不确定在哪里使用indexOf或其他jQuery替代方法(.search / .contains)):
urlArray.each(function(){
$.each(this, function(index) { } ) });
第一个URL的预期输出为0,第二个示例URL的预期输出为3。
非常感谢您的帮助!
答案 0 :(得分:1)
您还可以在forEach()
上使用urlArray
循环从数组中获取每个单词,并检查它们是否存在于url
中。
var url = 'www.site.com/car/somethingelse/banana/';
var urlArray = ['/car/', '/boat/', '/apple/', '/banana/'];
urlArray.forEach(function(word){
//if word exist in url
var wordIndex = url.indexOf(word);
if(wordIndex !== -1){
console.log(wordIndex);
}
});
注意
的普通函数includes()
在IE浏览器和较旧的版本中不起作用,因此要使其在所有浏览器中都起作用,建议的方法是避免使用includes()
的箭头功能,而应使用indexOf()
要返回数组索引:
var url = 'www.site.com/car/somethingelse/banana/';
var urlArray = ['/car/', '/boat/', '/apple/', '/banana/'];
urlArray.forEach(function(word, index){
//if word exist in url
if(url.indexOf(word) !== -1){
console.log(index);
}
});
答案 1 :(得分:0)
如果使用findIndex()
字符串,则可以使用includes()
遍历数组以获取索引。
这将通过{
"StatusCode": 0,
"StatusMessage": "OK",
"StatusDescription": "No result"
}
并返回第一个匹配项的索引(如果找不到匹配项,则返回-1。)
<table *ngFor="let item of notif">
<tr class="cell" style=" border-width: 3px" >{{item.name}}
</tr>
</table>
答案 2 :(得分:0)
for (var i = 0; i < urlArray.length; i++) {
if(pageURL .indexOf(urlArray[i])>-1){
console.log(pageURL.indexOf(urlArray[i])));
}
}