這是問題所在。說我有這些字符串:由最長公共起始子字符串組成的字符串組
- 蘋果iPad迷你32GB
- 蘋果iPad迷你64GB
- 蘋果iPad空氣64GB
- 蘋果iPad空氣32GB
- 松下GH4
- 三星S2銀河
- samsung s2 galaxy red
- samsung s3 galaxy
我想這些字符串進行分組如下:
- 蘋果iPad迷你:蘋果iPad迷你32GB,蘋果iPad迷你64GB]
- 蘋果iPad的空氣:蘋果iPad空氣64GB,蘋果ipad的32GB]
- 松下GH4:松下GH4]
- 三星S2星系:三星S2星系,三星S2星系紅色]
- 三星S3星系
關鍵是將項目的名稱與其屬性(顏色,內存容量等)分開。
我用這個算法尋找最長公共子: link
你們可以分享您的想法?無需代碼或實施。謝謝。
編輯:
this.data = _.sortBy(this.data, function(item) {
return item.title;
});
var i = 0;
var groups = {};
var len = this.data.length - 1;
while(i < len) {
var key = this.lcs(this.data[i][this.attr], this.data[i+1][this.attr]) || this.data[i][this.attr];
groups[key] = true;
i++;
while(this.data[i][this.attr].startsWith(key) && i < len) {
i++;
}
}
console.log(groups)
這個偉大的工程(測試只增加鍵)。但我也想添加三星s3星系列表。感謝幫助傢伙!
請分享您的代碼 –
你想盯上了別人的最長公共子方法的優劣?你在找什麼想法?備擇方案? – jusopi
我仍然在解決方案,改變了40倍的代碼。我問這個問題的一般模式或方法。謝謝你的迴應。 –