It is necessary to remove repetitions from the list of hashtags and bring them to lower case. The result must be a string. The hashtags in the string must be separated by a comma and a space: tag1, tag2, tag3 .

 ['web', 'coursera', 'JavaScript', 'Coursera', 'script', 'programming'] //Содержание массива 

A variant with a nested loop came to mind.

 var elements = ['web', 'coursera', 'JavaScript', 'Coursera', 'script', 'programming']; var filtered = []; for (var i = 0; i < elements.length;i++){ var j = 1; if(elements[i].toLowerCase() !== elements[j].toLowerCase()){ filtered.push(elements[i]); } j++; console.log(filtered); } 

However, the result is complete nonsense, I do not know how to decide, please send.

    3 answers 3

     var elements = ['web', 'coursera', 'JavaScript', 'Coursera', 'script', 'programming']; var filtered = Array.from(new Set(elements.map(x => x.toLowerCase()))); console.log(filtered) 

    • Where can I find and read about these methods? Array, from, new Set and x => - Shakhzod Yokubov
    • Very elegant making. Not previously used in this form set. And the question of where to find very strange, having entered a lot of documentation on the Internet. - Ruslan Semenov
    • one
      @RuslanSemenov, first asked, then thought, I am already reading)) - Shakhzod Yokubov

    Here is another option

     var elements = ['web', 'coursera', 'JavaScript', 'Coursera', 'script', 'programming']; var filtered = []; elements.forEach(function(element) { var n = element.toLowerCase(); if (filtered.indexOf(n) === -1) filtered.push(n); }); console.log(filtered); 

      Your modified version.

       const elements = ['web', 'coursera', 'JavaScript', 'Coursera', 'script', 'programming']; const filtered = []; for (var i = 0; i < elements.length; i++) { let hasInFiltered = false; for (var j = 0; j < filtered.length; j++) { if (elements[i].toLowerCase() === filtered[j].toLowerCase()) { hasInFiltered = true; break; } } if (!hasInFiltered) { filtered.push(elements[i]); } } console.log(filtered); 

      Can do a little easier.

       const elements = ['web', 'coursera', 'JavaScript', 'Coursera', 'script', 'programming']; const filtered = []; for (var i = 0; i < elements.length; i++) { let hasInFiltered = filtered.some(s => s.toLowerCase() === elements[i].toLowerCase()); if (!hasInFiltered) { filtered.push(elements[i]); } } console.log(filtered); 

      And the last option, using the object

       const elements = ['web', 'coursera', 'JavaScript', 'Coursera', 'script', 'programming']; const filtered = Object.keys(elements.reduce((r, n) => { r[n.toLowerCase()] = true; return r; }, {})); console.log(filtered);