Javascript列表包含一个字符串

Javascript list contains a string

本问题已经有最佳答案,请猛点这里访问。

有人知道不使用indexof检查列表是否包含字符串的方法吗?在我的数组中,一些字符串可以包含其他字符串的一部分,因此indexof将产生误报。

例如,我如何确定"component"是否在下面的数组中?

1
["component.part","random-component","prefix-component-name","component"]

更新:

我使用假阳性似乎有误导性。我的意思是当我想单独匹配字符串时,它会说组件在那里4次。

也就是说,当检查下面的数组中是否存在"component"时,它应该返回false。

1
["component.part","random-component","prefix-component-name"]


使用Array.findAPI。

例子:

1
2
3
4
5
6
7
8
9
"use strict";

let items = ["component.part","random-component","prefix-component-name","component"];

let found = items.find(item => { return item ==="component.part" } );

if (found) {
    console.log("Item exists.");
}

有关更多用法示例。

见:https://developer.mozilla.org/en/docs/web/javascript/reference/global_objects/array/find


一种方法是使用.find()从数组中获取所需的字符串。


尝试使用$.inarray()方法。

1
2
3
4
var list=["component.part","random-component","prefix-component-name","component"];
if($.inArray(" component",list) != -1){
    console.log("Item found");
}

Does anyone know of a way to check if a list contains a string without using indexOf? In my array some strings can contains parts of others, so indexOf will produce false positives.

假阳性?Array.prototype.indexOfArray.prototype.includes都使用严格的平等,这使得这在这里不可能实现。


indexof不会给你假阳性。它会给你3分。如果您想找到所有具有"OtherStuff组件网"的元素,可以通过数组进行循环,并使用string.includes()进行检查。

这是一个初学者友好的解决方案。

1
2
3
4
5
6
7
8
9
10
    var arr = ["component.part","random-component",
   "prefix-component-name","component","asdf"];
   
    console.log(arr.indexOf('component')); // give u 3
   
    for (var i = 0; i < arr.length; i++){
      if (arr[i].includes('component')){
        console.log(arr[i]);
      }
    }