Skip to content

Instantly share code, notes, and snippets.

@ronaldronson
Last active August 29, 2015 14:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ronaldronson/ad5ee73aa6a57d17e778 to your computer and use it in GitHub Desktop.
Save ronaldronson/ad5ee73aa6a57d17e778 to your computer and use it in GitHub Desktop.
Search for connections between the elements of the string array
var input = 'Silver Iphone 5s 16 Gb Facetime',
data = "Samsung Galaxy 2,Samsung Galaxy s3,Samsung Galaxy s4,Samsung Galaxy s5,Samsung Galaxy Duos,Samsung Galaxy Duos 2,Samsung Galaxy Mega, Samsung Galaxy Mega 2, Samsung Galaxy Yong,Sony Xperia XL,SonyXperia L,Sony Xperia SL,Sony Xperia S,Apple Iphone 5s 16Gb gray,Apple Iphone 5s 16Gb gold,Apple Iphone 5s 16Gb silver,Apple Iphone 5s 32Gb gray,Apple Iphone 5s 32Gb gold,Apple Iphone 5s 32Gb silver,AppleIphone 5s 64Gb gray,Apple Iphone 5s 64Gb gold,Apple Iphone 5s 64Gb silver,Apple Iphone 5 16Gb gray,Apple Iphone 5 16Gb gold,Apple Iphone 5 16Gb silver";
function search(inp, data) {
var spases = /\s+/;
function _toLower(val) {
return val.toLowerCase()
}
function _countIndex(pre, cur) {
var res = inp.match(new RegExp(cur, 'g'));
return pre + (res ? res.length : 0)
}
inp = inp.split(spases).map(_toLower).join('')
return data
.split(/\s?,\s?/)
.map(function (val) {
var obj = { orig: val }
obj.count = val.split(spases)
.map(_toLower).reduce(_countIndex, 0)
return obj
})
.sort(function (pre, next) {
return pre.count < next.count ? 1 : -1;
})
.slice(0, 10)
.map(function (val) {
return val.orig
})
}
search(input, data)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment