根据内容过滤数组中的字符串

pri*_*nce 4 javascript arrays jquery

我遇到一个问题,我在JS中有类似的字符串数组:

var myArray = ["bedroomone", "bedroomonetwo", "bathroom"];
Run Code Online (Sandbox Code Playgroud)

我想检索包含关键字“ bedroom”的数组中的所有元素。我如何获得这样的结果?

我尝试了不同的方法,但未获得预期的结果。我应该如何进行?

小智 24

var bedrooms = myArray.filter(name => name.includes('bedroom'))
Run Code Online (Sandbox Code Playgroud)

  • 请提供一些有关为什么这样做的信息! (4认同)

Mic*_*fed 9

String.prototype.indexOf

var PATTERN = 'bedroom',
    filtered = myArray.filter(function (str) { return str.indexOf(PATTERN) === -1; });
Run Code Online (Sandbox Code Playgroud)

正则表达式

var PATTERN = /bedroom/,
    filtered = myArray.filter(function (str) { return PATTERN.test(str); });
Run Code Online (Sandbox Code Playgroud)

String.prototype.includes(仅在现代浏览器中):

var PATTERN = 'bedroom',
    filtered = myArray.filter(function (str) { return str.includes(PATTERN); });
Run Code Online (Sandbox Code Playgroud)

  • 我认为indexOf函数中的条件应该是str.indexOf(PATTERN) > -1 (5认同)

Ars*_*utt 7

使用 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" }]
Run Code Online (Sandbox Code Playgroud)
Using javascript arrow function 
Run Code Online (Sandbox Code Playgroud)


Rif*_*een 5

改进了 Microfed 对此的回答

var textToSearch = 'bedroom';
var filteredArray = myArray.filter((str)=>{
  return str.toLowerCase().indexOf(textToSearch.toLowerCase()) >= 0; 
});
Run Code Online (Sandbox Code Playgroud)