检查字符串是否在列表中 (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)
我有如下列表:
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)