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

时间:2016-11-08 14:05:41

标签: javascript java list salesforce

我有一个列表如下:

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)

5 个答案:

答案 0 :(得分:2)

您可以遵循许多不同的策略,但indexOf仅在您查找完全相同的根对象时才有效,而不是其中一个属性

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

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

这将返回一个新集合,其中的项目按回调的返回值进行过滤。然后,检查长度,看它是否为0或更大。

答案 1 :(得分:2)

您可以使用Array.some

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

答案 2 :(得分:2)

您可以在不同的场景中使用以下方法:

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)

答案 3 :(得分:1)

检查以下代码:

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");
  }
}

答案 4 :(得分:1)

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