如果关键字是子字符串,我无法弄清楚为什么这个函数不返回结果。
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/