我遇到了一个问题,我在 JS 中有一个类似的字符串数组:
var myArray = ["bedroomone", "bedroomonetwo", "bathroom"];
我想检索包含关键字“卧室”的数组中的所有元素。我怎样才能达到这样的结果?
我尝试了不同的方法,但没有得到想要的结果。我应该如何进行?
我遇到了一个问题,我在 JS 中有一个类似的字符串数组:
var myArray = ["bedroomone", "bedroomonetwo", "bathroom"];
我想检索包含关键字“卧室”的数组中的所有元素。我怎样才能达到这样的结果?
我尝试了不同的方法,但没有得到想要的结果。我应该如何进行?
var PATTERN = 'bedroom',
filtered = myArray.filter(function (str) { return str.indexOf(PATTERN) === -1; });
var PATTERN = /bedroom/,
filtered = myArray.filter(function (str) { return PATTERN.test(str); });
String.prototype.includes(仅在现代浏览器中):
var PATTERN = 'bedroom',
filtered = myArray.filter(function (str) { return str.includes(PATTERN); });
var bedrooms = myArray.filter(name => name.includes('bedroom'))
使用 JavaScript 箭头函数要简单得多
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter(word => word.length > 6);
console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]
// search using keyword from array
var keywordToSearch = 'Arslan'; // word to search
var keyword = keywordToSearch.toLowerCase();
var names = [{id: 1, name: 'Aqib'}, {id: 2, name: 'Arslan'}];
//search keyword from names array by name
var searchResult = names.filter(word => word.name.toLowerCase().indexOf(keyword) > -1);
console.log(searchResult);
// expected output: > Array [Object { id: 2, name: "Arslan" }]
Using javascript arrow function
改进了 Microfed 对此的回答
var textToSearch = 'bedroom';
var filteredArray = myArray.filter((str)=>{
return str.toLowerCase().indexOf(textToSearch.toLowerCase()) >= 0;
});
您还可以使用 search() 方法
在正则表达式搜索中查找第一个子字符串匹配项。
(方法) String.search(regexp: string | RegExp): number (+1 重载)
const filterList = (data, query) => {
return data.filter(name => name.toLowerCase().search(query.toLowerCase()) !== -1);
};