如何在Javascript中將數組(例如["Susy", "John", "Mary"]
)轉換爲"Susy, John, and Mary"
?我無法將Ruby的to_sentence方法從我的腦海中解放出來。Javascript Array to Sentence
回答
加入所有項目除了最後一個,然後加上一句:
var s = arr.slice(0, arr.length - 1).join(', ') + ", and " + arr.slice(-1);
只有一個註釋 - 美國人在「和」之前加逗號。 OP已經做到了。 – Popnoodles
@popnoodles:啊,那麼你只需要使用「+」和「+」。 – Guffa
我用這種方法去了。 – Corey
var arr = ["Susy", "John", "Mary"];
var str = arr.join(", ");
這產生'「蘇西,約翰,瑪麗」',這不是理想的結果。 – pjmorse
修改最後再加入
var source = ["Susy", "John", "Mary"];
source.push('and ' +source.pop());
console.log(source.join(', '))// Susy, John, and Mary
確定這是更性感:)但是,在語法之前添加一個逗號是否正確? – mika
不適用於1和2元素:[「Susy」] =>「和Susy」。 [「蘇西」,「約翰」] =>「蘇西和約翰」 –
試一下:
var array = ['susy', 'john', 'mary'];
var last = array.pop();
var string = array.join(', ') + " and " + last;
MORE。我不嘗試,但你應該明白我的意思
而另一種解決方案:
(function(a) {
var b = (a||(a=[])).pop();
return (b ? a.length ? [a.join(", "),b] : [b] : a).join(" and ");
})(["Susy", "John", "Mary"]);
或只是定義在你的紅寶石般的句子方法陣列的原型:
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"
另一種選擇,使用Array.prototype.reduce
,應該是:
var arr = [1,2,3];
arr.reduce(
function(prev, curr, i){
return prev + curr + ((i===arr.length-2) ? ' and ' : ', ')
}, '')
.slice(0, -2);
主要生產"1, 2 and 3"
。
有一些額外的情況下,在這一個:
- 難道我們希望有「和」(牛津逗號)之前一個逗號
- 無論哪種方式,我們不希望一個逗號,如果只有2個元素
- 如果只有1元,我們只想說一句話返回
我認爲這符合所有這些用例:
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;
}
這應該是正確的答案! – 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. Array to javascript
- 2. Array to List Javascript
- 3. javascript push to 1 array
- 4. python list to javascript array
- 5. JavaScript Serialize Array to JSON
- 6. Websockets JSON to Javascript array
- 7. Javascript Array to Objects transformEmployeeData
- 8. $ .get return json_encoded php array to javascript
- 9. jquery javascript reset array to 1
- 10. XML to JavaScript Array [Google Maps]
- 11. PHP array to multidimensional array
- 12. Array of Array to Json
- 13. Array to php and retrieve
- 14. Buggy String Array to Double Array Conversion
- 15. lodash object to array
- 16. array to string(php)
- 17. Numpy matrix to array
- 18. Octave - array to number
- 19. TrueType to C Array
- 20. Array to string angular
- 21. Array to data Swift
- 22. Array to XML - Rails
- 23. Java String to Array
- 24. Array to function parameters
- 25. Convert Array to DayOfWeek
- 26. Java:Slice Array To End
- 27. Array to object
- 28. Chart Series to Array
- 29. Array to string conversion
- 30. PHP $ row to array
沒有那麼嚴重,但..'[ 「與Susy」, 「約翰」, 「瑪麗」。加入( ' ')。分裂(/ M /)。加入(' 和M' );' – jAndy