javascript - 包含()不为子字符串返回true

标签 javascript arrays

如果关键字是子字符串,我无法弄清楚为什么这个函数不返回结果。

const string = 'cake';
const substring = 'cak';
console.log(string.includes(substring));
// returns true

但是当我在这里尝试做类似的事情时,我没有得到我期望的结果。

function filterByKeyword(array, keyword) {
  return array.filter((x) =>
    x.keywords
      .map(function(x) {
        return x.toLowerCase();
      })
      .includes(keyword.toLowerCase())
  );
};

const array = [{
    "id": 1014,
    "keywords": [
      "Sesame Street",
      "Cake",
      "Party",
      "Birthday"
    ]
  },
  {
    "id": 1015,
    "keywords": [
      "Sesame Street",
      "Party",
      "Birthday"
    ]
  }
];

console.log(filterByKeyword(array, 'cak'))
// returns []

console.log(filterByKeyword(array, 'cake'))
// returns an array with the correct object

我究竟做错了什么?

最佳答案

您可以使用 Array#some 检查数组中的任何字符串是否包含关键字。

function filterByKeyword(array, keyword) {
  return array.filter((x) => 
     x.keywords.some(w=>w.toLowerCase().includes(keyword.toLowerCase()))
  );
};

const array = [
{
  "id":1014,
  "keywords":[
     "Sesame Street",
     "Cake",
     "Party",
     "Birthday"
  ]
},
{
  "id":1015,
  "keywords":[
     "Sesame Street",
     "Party",
     "Birthday"
  ]
}];

console.log(filterByKeyword(array, 'cak'))

关于javascript - 包含()不为子字符串返回true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66536188/

相关文章:

javascript - 使用 jQuery load() 内容时无法使工具提示正常工作

php - codeigniter 分组依据,产品库存位于单独的分支上

javascript - JQuery 数据表错误?

c - Incomplete数组类型是否保证能够存储一个元素?

c - 如何不使指向数组 [0] 的指针在每个循环中修改数组 [0]

c++ - 对二维数组进行排序

c - 使用 C 的数组 - 这些数字是多少?

javascript - pegjs 正则表达式组内参数的深度标记

javascript - 将内容替换为 ng-include 中文件的内容

php - JavaScript 和 Flash 与 IE 不兼容