Quello che voglio è qualcosa come Array.join(separator)
, ma che prende un secondo argomento Array.join(separator, beforeLastElement)
, quindi quando dico [foo, bar, baz].join(", ", " or")
mi piacerebbe ottenere "foo, bar or baz"
. Immagino di poter scrivere una funzione che utilizza Array.slice
per separare l'ultimo elemento, ma c'è un metodo ben noto che potrei usare invece?C'è un modo per unire gli elementi in un array js, ma lasciare che l'ultimo separatore sia diverso?
C'è un modo per unire gli elementi in un array js, ma lasciare che l'ultimo separatore sia diverso?
risposta
No, questo è abbastanza specifico da dover scrivere una funzione personalizzata. La buona notizia è, come hai detto, quando usi Array.join
per occuparti di tutti i separatori, l'ultimo sarà abbastanza facile da aggiornare.
Sei sicuro che una funzione dovrebbe essere predefinita solo per quello?
var a = ['a', 'b', 'c'];
var str = a.slice(0, -1).join(',')+' or '+a.slice(-1);
Costruzione off di risposta di @ dystroy:
function formatArray(arr){
var outStr = "";
if (arr.length === 1) {
outStr = arr[0];
} else if (arr.length === 2) {
//joins all with "and" but no commas
//example: "bob and sam"
outStr = arr.join(' and ');
} else if (arr.length > 2) {
//joins all with commas, but last one gets ", and" (oxford comma!)
//example: "bob, joe, and sam"
outStr = arr.slice(0, -1).join(', ') + ', and ' + arr.slice(-1);
}
return outStr;
}
usi Esempio:
formatArray([]); //""
formatArray(["a"]); //"a"
formatArray(["a","b"]); //"a and b"
formatArray(["a","b","c"]); //"a, b, and c"
formatArray(["a","b","c","d"]); //"a, b, c, and d"
Ottimo! Comunque piccolo bug sulla riga 'outStr = arr.slice (0, -1) .join (',') + ', e' + arr.slice (-1);' Metti uno spazio dopo la virgola in 'join () ' –
@AndyB oops, sì hai ragione. Ho aggiunto lo spazio ora. Grazie! –
Funziona come un fascino. :) –
Array.prototype.join2 = function(all, last) {
var arr = this.slice(); //make a copy so we don't mess with the original
var lastItem = arr.splice(-1); //strip out the last element
arr = arr.length ? [arr.join(all)] : []; //make an array with the non-last elements joined with our 'all' string, or make an empty array
arr.push(lastItem); //add last item back so we should have ["some string with first stuff split by 'all'", last item]; or we'll just have [lastItem] if there was only one item, or we'll have [] if there was nothing in the original array
return arr.join(last); //now we join the array with 'last'
}
> [1,2,3,4].join2(', ', ' and ');
>> "1, 2, 3 and 4"
Per nodejs
webpack
e altri Fardellatrici utenti: c'è un pacchetto join-array
const join = require('join-array');
const names = ['Rachel','Taylor','Julia','Robert','Jasmine','Lily','Madison'];
const config = {
array: names,
separator: ', ',
last: ' and ',
max: 4,
maxMessage:(missed)=>`(${missed} more...)`
};
const list = join(config); //Rachel, Taylor, Julia, (3 more...) and Madison
- 1. Come unire l'elenco in Python ma rendere l'ultimo separatore diverso?
- 2. Come posso unire un array di stringhe, ma prima rimuovere gli elementi dell'array che sono vuoti?
- 3. Java: unire array di primitive con separatore
- 4. Come duplicare elementi in un array js?
- 5. Come unire elementi di elenco, ma utilizzare un delimitatore diverso per l'ultimo elemento?
- 6. Come si uniscono gli elementi ripetuti consecutivi in un array?
- 7. Come mescolare un array in modo che tutti gli elementi cambino la loro posizione
- 8. Javascript: esiste un modo per distruggere tutti gli elementi di un array con un solo comando?
- 9. PHP. C'è un modo per richiedere che un parametro di funzione sia un array?
- 10. In looping in un elenco nel rasoio e aggiunta di un separatore tra gli elementi
- 11. Gli array PHP possono contenere elementi di diverso tipo?
- 12. C'è un modo per verificare se due array hanno gli stessi elementi?
- 13. Jinja2: format + unire gli elementi di un elenco
- 14. C'è un modo per leggere un file in un ciclo in Python usando un separatore diverso a capo
- 15. Mantenere gli elementi pari di un array?
- 16. arrotondamento un numero in modo che sia divisibile per 5
- 17. Unire tutti i file in una directory, con un separatore
- 18. Come unire due array per creare un array in JavaScript?
- 19. Confrontando due array di oggetti, ed escludere gli elementi che corrispondono a valori in nuovo array in JS
- 20. javascript: rimuovere tutti gli elementi oggetto di un array associativo
- 21. In che modo HashSet confronta gli elementi per l'uguaglianza?
- 22. Ottieni l'elenco di tutti gli elementi in un array JavaScript
- 23. Un modo migliore per rimuovere più elementi di array
- 24. Mongodb - modo corretto per cancellare tutti gli elementi in un campo array?
- 25. In che modo i browser moderni implementano JS Array, in particolare aggiungendo elementi?
- 26. Come unire elementi NSArray in una NSString?
- 27. Come determinare che un array sia parte di un altro?
- 28. Come si può aggiungere un separatore tra gli elementi in un ItemsControl
- 29. Come lasciare che gli elementi DOM si sovrappongano e si sovrappongano orizzontalmente anziché verticalmente in HTML?
- 30. Gli elementi essenziali del Web offrono un modo per utilizzare il file js in bundle nella produzione ma i singoli file js in fase di sviluppo?
Si noti che questo assume 'a.length> 1'. Dovresti considerare 'a.length <= 1' pure –
Non sono sicuro che dovrebbe, mi chiedevo solo se ci fosse, e se non fosse stato concordato un metodo per farlo. Sarebbe sciocco scrivere qualcosa di diverso da tutti gli altri. –