export default (obj, word) => { if(typeof obj !== "object") return false; return obj.map(tmp => { let rscore = 0 , startat = 0 , string = tmp.tag , cscore , score; for(let i = 0; i < word.length; i++) { const idxOf = string.toLowerCase().indexOf(word.toLowerCase()[i], startat); if(-1 === idxOf) return 0; if(startat === idxOf) cscore = 0.7; else { cscore = 0.1; if(string[idxOf - 1] === ' ') cscore += 0.8; } if(string[idxOf] === word[i]) cscore += 0.1; rscore += cscore; startat = idxOf + 1; } score = 0.5 * (rscore / string.length + rscore / word.length); if(word.toLowerCase()[0] === string.toLowerCase()[0] && score < 0.85) score += 0.15; return { ...tmp, score: score }; }).sort((a, b) => b.score - a.score); };