using the following array, I want to search for the first letters assuming that there are several words in the same matrix, it must search in each word, if it finds it it should return in an array
example
const data= [
"the lions of teranga",
"tiger woods",
"The Truman Show",
"Shutter Island",
"The Gold Rush",
]
]
if it matches "sh" it should search for each word and return
["Shutter Island", "The Truman Show"] but not The Gold Rush
if it matches "lions" it should search for each word and return
["the lions of teranga"]
CodePudding user response:
Here is one of the solutions with combination of forEach
and RegEx
const data= [
"the lions of teranga",
"tiger woods",
"The Truman Show",
"Shutter Island",
"The Gold Rush",
]
const filteredData = []
data.forEach(sentence => {
let words = sentence.split(" ")
words.forEach((word,index) => {
if(word.match(/^lions?\w/gi)) {
filteredData.push(sentence)
}
})
})
console.log(filteredData)
CodePudding user response:
const data= [
"the lions of teranga",
"tiger woods",
"The Truman Show",
"Shutter Island",
"The Gold Rush",
]
inputData = "lions"
let a = data.filter(e => {
str = e.toLowerCase()
if (str.match(inputData.toLowerCase())){
return e
}
})
console.log(a)
Here filter returns the objects which are returned true. Here you can search by any word or character and return as an array.
CodePudding user response:
//your data array
const data= [
"the lions of teranga",
"tiger woods",
"The Truman Show",
"Shutter Island",
"The Gold Rush",
];
//your search letters,if it will be the same use const instead of var
var search="sh";
//make your search case insensitive
search=search.toLowerCase()
//use for loop to go through every sentence
for(var counter=0;counter<data.length;counter )
{
//get the array of words
var arrayOfWords=data[counter].match(/\b(\w )\b/g);
//use for loop to go through every word
for(var counter2=0;counter2<arrayOfWords.length;counter2 )
{
//make word case insensitive
var tempWord=arrayOfWords[counter2].toLowerCase();
//check if the search length does not exid your actuall word
if(search.length<=tempWord.length)
{
//check if first letters match
if(tempWord.slice(0,search.length==search)
{
//first letters match, you can put your logic here
}
else
{
//no match
}
}
else
{
//search exids word
}
}
}