JS объединяет дубликаты в массиве в «[num] x string»

#javascript #arrays #string #merge

#javascript #массивы #строка #слияние

Вопрос:

Я уверен, что у этого уже есть дубликат, но я не смог его найти, потому что понятия не имел, как сформулировать этот вопрос. В принципе, у меня есть массив JS. Пользователь может добавлять в него элементы из выпадающего меню. Затем этот массив передается в текстовую область. Пользователь может вводить одно и то же значение более одного раза. Если у них есть две одинаковые строки в массиве, я хотел бы удалить обе и заменить их на «2x string». Кроме того, если существуют «2x string» и «string», То они будут преобразованы в «3x string» и т. Д. И т. Д. Заранее спасибо за ответ. Я действительно ценю это. Я старался сделать его как можно более общим, чтобы другие люди с такой же проблемой тоже могли получить помощь от этого.

JS:

 var newfish = 'foo';
var oldtextareacontent = 'foo';
var fish = new Array();
var fishformatted = new Array();

function addfish(){
    //form is never submitted so as not to refresh page
    oldtextareacontent = document.getElementById("stock").value;
    newfish = document.getElementById("fish").options[document.getElementById("fish").selectedIndex].text;
    fish.push(newfish);
    fishformatted = fish.join("n");

    document.getElementById("stock").innerHTML = "Your stock: amp;#10;amp;#10;"   fishormatted;
}
  

Комментарии:

1. Возможно, лучший способ сохранить их не в виде массива измененных значений, а отслеживать количество. Например: {"stringA": 2, "stringB": 9, "stringC": 1, ...} , или [{value: "stringA", count: 2}, {value: "stringB", count: 9}, ...] . Это зависит от того, как вы на самом деле взаимодействуете с ними. Таким образом, в HTML вы можете перебирать любую структуру данных, иметь исходное значение и добавлять что-то дополнительное, если количество больше 1. Преимущество использования предложенного мной массива заключается в сохранении отсортированного порядка. В любом случае, это обеспечивает простой способ найти, существует ли он, и обновить или создать

2. Извините, я должен был уточнить немного больше. Элементы массива выбираются из списка с тысячами вариантов (все виды рыб).

3. Я добавил JS, который у меня есть до сих пор. Он извлекает данные из тега выбора html и печатает их в текстовой области

4. Как насчет 2 массивов? Один с дубликатами и один для просмотра пользователями