Дедупликация между строками с сохранением идентификационной метки
Проблема с JavaScript Можно ли это сделать?
У меня есть входной массив, содержащий что-нибудь от 2 до 5 строк, каждая с меткой, разделенной точкой с запятой, чтобы идентифицировать его. Мне нужно дедуплицировать, чтобы выходные данные удаляли дубликаты, а также поддерживали строковые идентификаторы, группируя при необходимости.
Массив ввода (3 элемента)
string1, яблоко | строка2, оранжевый |string3; оранжевый
Выходной массив (теперь 2 элемента, так как "оранжевый" появился дважды)
string1, яблоко | строка2/string3; оранжевый
2 ответа
Я не против помочь людям, которые только начинают работать с новым языком программирования или программированием: ( также js fiddle)
var arr=["string1;apple","string2;orange","string3;orange"];
var finalArr= [];
var output = {};
for(var i in arr){
var keyVal = arr[i].split(";");
if(output[keyVal[1]]==undefined){
output[keyVal[1]] = [keyVal[0]]
} else {
//should be an array
output[keyVal[1]].push(keyVal[0]);
}
}
for( var i in output){
finalArr.push(output[i].join("/")+";"+i);
}
console.log(finalArr);
Я думаю, что лучшим вариантом для этого было бы найти способ логически сгруппировать эту информацию.
- Преобразовать строку, разделенную символом трубы, в массив.
- Итерация по массиву
- Присвойте каждой паре идентификатор / значение паре свойство = значение в структуре.
- Удалите идентификатор и разделитель, чтобы вы остались с самой строкой в массиве.
- Сортировать массив.
- Дублируйте массив.
- Итерация по массиву.
- Выполните итерацию по структуре, чтобы создать список свойств, значения которых соответствуют записи.
- Отключите свойства, значения которых соответствуют записи, чтобы сократить время в будущих итерациях.
Это только один из способов сделать это. Я дал вам несколько советов о том, как вы можете подойти к проблеме, но вы сами должны это кодировать.