Si tengo una lista de elementos como este en cualquier área de texto, puedo usar un bookmarklet para ordenar los valores únicos.
a b d c cHago clic en el bookmarklet y la lista se corrige a:
a b c dcódigo:
javascript: ( function() { Array.from(document.querySelectorAll('textarea')).map(function(b) { var a = document.createElement('div'); var d = document.createElement('button'); d.textContent = '↑'; d.addEventListener('click', function(f) { f.preventDefault(); b.value = Array.from(new Set(b.value.split('\n'))).sort().join('\n') }); var c = document.createElement('button'); c.textContent = '↓'; c.addEventListener('click', function(f) { f.preventDefault(); b.value = Array.from(new Set(b.value.split('\n'))).sort().reverse().join('\n') }); a.appendChild(d); a.appendChild(c); b.parentNode.insertBefore(a, b) }) } )();Pero esto no funciona si todos los elementos están en la misma línea de esta manera...
a , b,d , c,c¿Es posible modificar el código para devolver los artículos como este...
a, b, c, dPuedo hacer eso en python. Pero me gustaría saber si es posible usar el bookmarklet de JavaScript.
myl = [i.strip() for i in text.split(',')] myl.sort() ', '.join(set(myl))Esto funcionaría mejor porque dado que su entrada tiene espacios en blanco, tenemos que usar expresiones regulares para dividir la cadena.
b = Array.from( new Set(b.split(/[ ,]+/))).sort().reverse().join(',')En esta línea:
b.value = Array.from( new Set(b.value.split('\n'))).sort().reverse().join('\n') Solo necesita cambiar '\n' a , , como:
b.value = Array.from( new Set(b.value.split(','))).sort().reverse().join(','); b.value.forEach(item => item.trim()); //to remove trailing whitespacesPuede probar lodash para este propósito, como se menciona en otras respuestas, primero debe cambiar el formato de las palabras de: a b d c c a: a, b, d, c, c
si cambia
let x= // your values eg a,b,d,c,c // let valuesArray=_.split(x,',') uniqueFromArray=_.uniq(valuesArray)si no cambia
let x= // your current input values // let valuesArray=_.split(x,'\n') uniqueFromArray=_.uniq(valuesArray)