在JavaScript数组中搜索与字符串模式匹配的所有项目的计数

问题描述 投票:0回答:3

我需要在JavaScript数组中搜索与字符串匹配的所有项目的计数。因此,例如,数组将包含以下元素:

  • ABC#1
  • ABC#1
  • ABC#1
  • ABC#2
  • ABC#3
  • DEF#1
  • DEF#2
  • GHI#2

我想做的是在数组中搜索诸如“ ABC”之类的字符串,然后获得与该模式匹配的项目数的计数。我正在使用REST API从SharePoint 2013列表中提取数据。到目前为止,这是我的相关代码:

var arrayPartySet = []; 

$.each(data.d.results, function (key, value) {

var partySet = value.Party_x0020_Set;

arrayPartySet.push(partySet); 
//alert("arrayPartySet " + arrayPartySet);//For Testing

}); 

我尝试过的:

JavaScript find()-仅带回数组中第一个元素的值

JavaScript include()-仅告诉我数组是否包含元素

如果任何人看到此问题并知道如何解决,请提供指导和示例。

javascript arrays sharepoint-2013
3个回答
1
投票

使用reduce,并在回调内部,检查当前项是否在.includes所搜索的指针上进行迭代:

const arr = [
  'ABC #1',
  'ABC #1',
  'ABC #1',
  'ABC #2',
  'ABC #3',
  'DEF #1',
  'DEF #2',
  'GHI #2',
];
const count = arr.reduce((a, str) => a + str.includes('ABC'), 0);
console.log(count);

如果您不喜欢.reduce,则等效于以下较长代码:

const arr = [
  'ABC #1',
  'ABC #1',
  'ABC #1',
  'ABC #2',
  'ABC #3',
  'DEF #1',
  'DEF #2',
  'GHI #2',
];
let count = 0;
for (const str of arr) {
  if (str.includes('ABC')) {
    count++;
  }
}
console.log(count);

1
投票

使用filter筛选包含ABC的字符串,然后找到数组的长度。

var arr = [
  'ABC #1',
  'ABC #1',
  'ABC #1',
  'ABC #2',
  'ABC #3',
  'DEF #1',
  'DEF #2',
  'GHI #2',
];
var count = arr.filter(str => str.includes('ABC')).length;
console.log(count);

0
投票

我们可以直接在REST API中使用$ filter获取项目。

/_api/web/lists/getbytitle('customlist')/items?$filter=substringof('ABC',Party_x0020_Set)

要搜索字符串数组,我们可以使用下面的代码来实现它。

var count = arrayPartySet.filter(function(item){ return item.includes("ABC"); }).length;
© www.soinside.com 2019 - 2024. All rights reserved.