检查字符串是否在列表中 (JavaScript)

Check if a string is in a list or not (JavaScript)

我有如下列表:

var myList = [{type:'Prospect__c', typeName__c:'high_school', },
{type:'Procedure__c', typeName__c:'in_program', },
{type:'Procedure__c', typeName__c:'attention_plz', }]

我想检查 in_program(出现在我的列表中)是否存在于我的列表中? 我使用了不同类型的代码来获得结果,但我没有成功。

以下是我的一些尝试:

if (myList.indexOf('in_program')>0)

if (myList.indexOf(typeName__c:'in_program')>0)

if (myList.indexOf(" typeName__c:'in_program' ")>0)

检查下面的代码:

var myList = [{type:'Prospect__c', typeName__c:'high_school', },
{type:'Procedure__c', typeName__c:'in_program', },
{type:'Procedure__c', typeName__c:'attention_plz', }];

var length = myList.length;

for(i = 0; i < length ; i++){

    if(myList[i].typeName__c == 'in_program')
  {
    alert("true");
  }
}
var entry = mylist.find(function(e){ return e.typeName__c === 'in_program'; });
if( entry ) {
   // found object in list 
}

记录在此处:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find

您可以采用多种不同的策略,但 indexOf 仅在您寻找完全相同的根对象而不是其属性之一时才有效

一个好的方法是使用过滤器:

var filteredItems = myList.filter(function(a) { 
  return a.typeName__c === 'in_program' 
})
console.log(filteredItems.length === 0) // false

这将 return 一个新集合,其中的项目由回调的 returned 值过滤。然后,您检查长度并查看它是否为 0 或更大。

您可以使用 Array.some:

var isInList = myList.some(function (obj) {
    return 'in_program' === obj.typeName__c;
});

您可以在不同的情况下使用以下方法:

JSON.stringify

如果只是为了查找可用性,您可以获取 JSON 字符串,然后将其签入。

正如 corn3lius 所指出的那样,仅检查搜索值也会在键中进行搜索。您可以将 searchValue 包装在 ":..." 中,这只会在值

中搜索

var myList = [{type:'Prospect__c', typeName__c:'high_school', },
{type:'Procedure__c', typeName__c:'in_program', },
{type:'Procedure__c', typeName__c:'attention_plz', }]
var searchVal = 'in_program';

var exist= JSON.stringify(myList).indexOf(":\"" + searchVal + "\"") > -1;

console.log(exist)

Array.some

如果您知道要查找的确切键,则可以使用数组函数作为替代方法

var myList = [{type:'Prospect__c', typeName__c:'high_school', },
{type:'Procedure__c', typeName__c:'in_program', },
{type:'Procedure__c', typeName__c:'attention_plz', }]
var searchVal = 'in_program';

var exist= myList.some(function(o){ return o.typeName__c === searchVal });

console.log(exist)

Array.find

如果你想找到第一个值匹配的对象,你应该使用Array.find

var myList = [{type:'Prospect__c', typeName__c:'high_school', },
{type:'Procedure__c', typeName__c:'in_program', },
{type:'Procedure__c', typeName__c:'attention_plz', }]
var searchVal = 'in_program';

var exist= myList.find(function(o){ return o.typeName__c === searchVal });

console.log(exist)

Array.filter

如果你想找到值匹配的所有对象,你应该使用Array.filter

var myList = [{type:'Prospect__c', typeName__c:'high_school', },
{type:'Procedure__c', typeName__c:'in_program', },
{type:'Procedure__c', typeName__c:'attention_plz', }]
var searchVal = 'Procedure__c';

var exist= myList.filter(function(o){ return o.type === searchVal });

console.log(exist)