В этом проблема. Скажем, у меня есть эти строки:Групповые строки по самой длинной общей стартовой подстроке
- Apple Ipad мини 32gb
- Apple Ipad мини 64gb
- Apple Ipad воздуха 64gb
- Apple Ipad воздуха 32gb
- Panasonic GH4
- Самсунга s2 галактики
- samsung s2 галактика красный
- samsung s3 галактика
Я хочу, чтобы эти строки должны быть сгруппированы следующим образом:
- Apple Ipad мини: [Apple Ipad мини 32gb, Apple Ipad мини 64GB]
- Apple Ipad воздуха: [Apple Ipad воздуха 64GB, яблоко Ipad 32gb]
- GH4 Panasonic: [Panasonic GH4]
- Samsung s2 галактики: [Samsung s2 галактики, Samsung s2 галактики красный]
- Samsung 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)
Это отлично работает (проверено только при добавлении ключа). Но я хочу добавить галактику samsung s3 в список тоже. Спасибо за помощь, ребята!
пожалуйста, поделитесь кодом –
вы желая обсуждать достоинства самого длинного общего метода подстроки над другими? Какие идеи вы ищете? Альтернативы? – jusopi
Я все еще работаю над решением, изменил код на 40 раз. Я прошу общую схему или подход к этой проблеме. Спасибо за ответ. –