首页 > 解决方案 > 如果包含特定单词,则从数组中返回匹配项

问题描述

我有一个数组,其中包含几个国家,后跟一个选项和一个数字。

0“英国一150”

1《瑞士二70》

2《中国二120》

3《瑞士一号45》

4《中国一号90》

5“英国二 50”

这就是我使用 xpath 获取数组的方式:

    var iterator = document.evaluate('//xpath/li[*]', document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);

try {
  var thisNode = iterator.iterateNext();
  var arrayList = [];

  while (thisNode) {
    arrayList.push(thisNode.textContent); 
    thisNode = iterator.iterateNext();
  }

  for (var i = 0; i < arrayList.length; i++) {
    console.log(arrayList[i]);
  }   
} catch (e) {
  dump('Error' + e);
}
arrayList

我想用这个数组做的是整理并只返回匹配项。例如,我希望它只返回英国和中国,所以数组看起来像这样。

0“英国一150”

1《中国二120》

2《中国一号90》

3《英国二 50》

标签: javascriptarraysmultiple-matches

解决方案


您可以使用正则表达式过滤数组,然后根据数值对结果进行排序。

let data =["UK One 150 ","Switzerland Two 70 ","China Two 120 ","Switzerland One 45 ","China One 90 ","UK Two 50 "],
  result = ((arr) => data.filter(s => new RegExp(arr.join('|'), 'ig').test(s)))(['UK', 'China'])
          .sort((a,b)=> +a - +b);
console.log(result);


推荐阅读