Ne istediğim Array.join(separator)
gibi bir şey, ama Array.join(separator, beforeLastElement)
ikinci bir argüman alır, bu yüzden [foo, bar, baz].join(", ", " or")
derken "foo, bar or baz"
alırdım. Son öğeyi ayırmak için Array.slice
kullanılan bir işlev yazabilirim, ancak bunun yerine kullanabileceğim iyi bilinen bir yöntem var mı?Bir js dizisindeki öğelere katılmanın bir yolu var mı, ancak son ayraç farklı mı olsun?
cevap
Hayır, bu özel bir işlev yazmanız yeterli olacaktır. İyi haber, dediğiniz gibi, tüm ayırıcılara dikkat çekmek için Array.join
'u kullandığınızda sonuncusu güncellenmesi kolay olacaktır.
Bunun için önceden tanımlanmış bir işlev olduğundan emin misiniz?
@ dystroy en cevabın kapalıvar a = ['a', 'b', 'c'];
var str = a.slice(0, -1).join(',')+' or '+a.slice(-1);
Bina:
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;
}
Örnek kullanımları: nodejs
webpack
ve diğer paket hazırlama kullanıcıları için
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"
Harika! Ancak satırdaki küçük hata outStr = arr.slice (0, -1) .join (',') + 've' + arr.slice (-1);) –
@AndyB oops, haklısınız. Şimdi alanı ekledim. Teşekkürler! –
Bir çekicilik gibi çalışır. :) –
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"
: bir paket var 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. Oracle: Son SQL sözdizimi hatalarını almanın bir yolu var mı?
- 2. NSCollectionView uygulamasında farklı görünümlere sahip olmanın bir yolu var mı?
- 3. "Vurgulu" kodun herhangi bir yolu var mı?
- 4. Farklı CQ örneklerinden görevleri almanın/vermenin bir yolu var mı?
- 5. Scala'nın RichString'ini genişletmenin bir yolu var mı?
- 6. Parametreyi çıkarmanın bir yolu var mı?
- 7. django.db.connection.queries öğesini temizlemenin bir yolu var mı?
- 8. Python'da + = aşırı yüklenmenin bir yolu var mı?
- 9. Bunu F # yazmanın bir yolu var mı?
- 10. IComparer'dan IEqualityComparer türetmenin bir yolu var mı?
- 11. YQL'i HTML'ye döndürmenin bir yolu var mı?
- 12. Koleksiyondan farklı bir yineleme değişkeni var mı?
- 13. Son durumu Scala for döngüsünde farklı şekilde ele almanın bir yolu var mı? Örneğin
- 14. ConfigurationManager.AppSettings'i geçersiz kılmanın bir yolu var mı?
- 15. Özel SmartArt geliştirmenin bir yolu var mı?
- 16. Keyboard.FocusedElement öğesine bağlamanın bir yolu var mı?
- 17. cuBLAS'da "saypx" yapmanın bir yolu var mı?
- 18. Tip bildirimlerini genişletmenin bir yolu var mı?
- 19. Yapı üzerinde VS2015 Typescript derlemesini durdurmanın bir yolu var mı?
- 20. CGPoints'i karşılaştırmanın bir yolu var mı?
- 21. RubyGems'i çevrimdışı güncellemenin bir yolu var mı?
- 22. Düzenleri canlandırmanın bir yolu var mı? [Android]?
- 23. Hafızayı sınırlamanın bir yolu var mı?
- 24. Pydev'de REPL almanın bir yolu var mı?
- 25. WiX yapılarını hızlandırmanın bir yolu var mı?
- 26. Files.write (...) yöntemini almanın bir yolu var mı?
- 27. SKActions'i duraklatmanın bir yolu var mı?
- 28. C harflerini saymanın bir yolu var mı?
- 29. PDF'leri pdf.js'de birleştirmenin bir yolu var mı?
- 30. TensorFlow baskılarını bastırmanın bir yolu var mı?
Bunun bir "1. 'A.length <= 1' 'i de –
' un kapsamına almalısın, emin olmama gerek yok, sadece var mı diye merak ettim, eğer yapıp yapmadığına dair bazı anlaşmalar varsa, olmasaydım. Herkesden farklı bir şey saçma olurdu. –