Jak mogę włączyć tablicę, na przykład ["Susy", "John", "Mary"]
do "Susy, John, and Mary"
w JavaScript? Nie mogę wyrzucić mojej metody z metody Rubiego.Javascript Array do zdania
Odpowiedz
Dołącz wszystkie elementy z wyjątkiem ostatniego, a następnie dodać, że:
var s = arr.slice(0, arr.length - 1).join(', ') + ", and " + arr.slice(-1);
Tylko jedna uwaga- Amerykanie kładą przecinek przed "i". OP to zrobił. – Popnoodles
@popnoodles: Ah, wtedy wystarczy użyć '+" i "+". – Guffa
Poszedłem tą metodą. – Corey
Można użyć .join() i poprzedzić ostatnią wartość z "i"
var array = ['susy', 'john', 'mary'];
array[array.length-1] = 'and '+array[array.length-1];
//string is "susy, john, and mary"
var string = array.join(', ');
var arr = ["Susy", "John", "Mary"];
var str = arr.join(", ");
To produkuje '" Susy, John, Mary "', który nie jest pożądany wynik. – pjmorse
zmodyfikuj ostatni, a następnie dołącz
var source = ["Susy", "John", "Mary"];
source.push('and ' +source.pop());
console.log(source.join(', '))// Susy, John, and Mary
OK, to jest bardziej seksowne :) Ale czy poprawne gramatycznie jest dodanie przecinka przed i? – mika
Nie działa dla 1 i 2 elementów: ["Susy"] => "i Susy". ["Susy", "John"] => "Susy i John" –
Spróbuj tego:
var array = ['susy', 'john', 'mary'];
var last = array.pop();
var string = array.join(', ') + " and " + last;
Nie miałem t spróbować, ale należy się pomysł
a kolejne rozwiązanie:
(function(a) {
var b = (a||(a=[])).pop();
return (b ? a.length ? [a.join(", "),b] : [b] : a).join(" and ");
})(["Susy", "John", "Mary"]);
lub po prostu określającą metodę zdanie Ruby-jak w prototyp tablicy:
Array.prototype.sentence = function(comma,and) {
var b = this.pop();
return (b ? this.length ? [this.join(comma||", "),b] : [b] : this).join(and||" and ");
};
["Susy", "John", "Mary"].sentence();
//"Susy, John and Mary"
["Susy", "John", "Mary"].sentence(" and ", " as well as ");
//"Susy and John as well as Mary"
["Susy", "John", "Mary", "Helmut"].sentence();
//"Susy, John, Mary and Helmut"
Inną opcją, używając Array.prototype.reduce
, byłoby:
var arr = [1,2,3];
arr.reduce(
function(prev, curr, i){
return prev + curr + ((i===arr.length-2) ? ' and ' : ', ')
}, '')
.slice(0, -2);
Produkuje "1, 2 and 3"
.
Istnieje kilka dodatkowych przypadków w tym jednym:
- Czy chcemy mieć przecinek przed „i” (Oxford przecinek)
- Tak czy inaczej, nie chcemy przecinek if istnieją tylko 2 elementy
- Jeśli jest tylko jeden pierwiastek, chcemy tylko, że słowo zwrócone
myślę, że to pasuje do wszystkich tych przypadków użycia:
function joinSentence(array, oxford_comma){
if(array.length > 1){
var lastWord = " and " + array.pop();
if(oxford_comma && array.length > 1){
lastWord = "," + lastWord;
}
}else{
var lastWord = "";
}
return array.join(", ") + lastWord;
}
To powinna być właściwa odpowiedź! – mech
toSentence = function(arr){ return arr.join(", ").replace(/,\s([^,]+)$/, ' and $1');};
toSentence(['dogs', 'cats']); // => dogs and cats
toSentence(['dogs', 'cats', 'snakes']); // => dogs, cats and snakes
- 1. Od tytułu do zdania zdania
- 2. JavaScript Array do Object
- 3. JavaScript Array Key Lookup
- 4. Javascript copy array do nowej tablicy
- 5. DB Array do oczekiwanego formatu javascript
- 6. Pass Array od MVC do javascript?
- 7. Dodaj metodę do obiektu Array w JavaScript?
- 8. JavaScript Group By Array
- 9. Unia Array obiektów w JavaScript?
- 10. Redefiniowanie konstruktora Array w JavaScript
- 11. Loop Over Array w JavaScript
- 12. Dostęp Obiekty JSON (JavaScript Array)
- 13. Javascript Get sekwencyjne daty Array
- 14. Javascript Concateenate Array to String
- 15. zagubiony return array # mapie javascript
- 16. Dlaczego ",,," == Array (4) w JavaScript?
- 17. JavaScript Array Object vs Array Like Objects - Clarification
- 18. Przekształcanie tablicę morfemów do zdania w Ruby
- 19. Jak przekonwertować drzewo prologu do logicznego zdania
- 20. Używanie spaCy do zastąpienia "tematu" zdania
- 21. Wyznaczanie czasu zdania Python
- 22. Wyliczanie zdania w Pythonie
- 23. Wczytywanie danych array array do JTable
- 24. Jak dołączyć tekst do wszystkich wartości javascript Array
- 25. Dodaj funkcje z parametrami do Array Javascript (Node.js)
- 26. Javascript Array Concat nie działa. Czemu?
- 27. klienta Array podobny getter w JavaScript
- 28. javascript readAsArrayBuffer zwraca pusty bufor Array
- 29. Convert Array Object regularnym obiekt JavaScript
- 30. Kiedy używać Float32Array zamiast Array w JavaScript
nie tak poważnie, ale .. '[ "Susy", "Jan", "Mary"]. Join (' '). Split (/ M /). Przyłączenia (' i M'); ' – jAndy