2013-02-25 19 views

cevap

6

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.

23

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); 
+1

Bunun bir "1. 'A.length <= 1' 'i de –

+0

' 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. –

11

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ı: nodejswebpack 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" 
+0

Harika! Ancak satırdaki küçük hata outStr = arr.slice (0, -1) .join (',') + 've' + arr.slice (-1);) –

+1

@AndyB oops, haklısınız. Şimdi alanı ekledim. Teşekkürler! –

+0

Bir çekicilik gibi çalışır. :) –

4
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" 
0

: 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 
İlgili konular