2016-10-30 10 views
2

私は文字列の配列を持っており、コンマ区切りの文字列として表示したいが最後の要素には "and"を追加したい。例えば、私が持っている条件付き配列.join in Javascript

var fruits = ["Banana", "Orange", "Apple", "Mango"]; 
var energy = fruits.join(' ,'); 

出力

'Banana, Orange, Apple, Mango' 

それは

'Banana, Orange, Apple and Mango' 
+0

を。 – vlaz

答えて

1

あなたはこれを試すことができますを出力して、私は最後の言葉のための追加「と」どのような方法があり、

var delimitter = ', '; 
 
var fruits = ["Banana", "Orange", "Apple", "Mango"]; 
 
var energy = fruits.join(delimitter); 
 
var index = energy.lastIndexOf(delimitter); 
 
energy = energy.substring(0, index) + ' and ' + energy.substring(index + delimitter.length); 
 

 
console.log(energy);

+0

ありがとうございました@Arunaそれは私がやったことがまさに私の要求に合ったものです。私は他の提案も正しいと確信していますが、私はこれを答えとして受け入れました。 – snowflakes74

1

機能への文章underscore.stringは、あなたが望む正確な機能を持っています。あなたは全体のライブラリを取得したくない場合は、あなただけのtoSentenceを借りることができます:

function toSentence(array, separator, lastSeparator, serial) { 
    separator = separator || ', '; 
    lastSeparator = lastSeparator || ' and '; 
    var a = array.slice(), 
    lastMember = a.pop(); 

    if (array.length > 2 && serial) lastSeparator = separator + lastSeparator; 

    return a.length ? a.join(separator) + lastSeparator + lastMember : lastMember; 
}; 
3

あなたは、スライスを使用して、配列の最初の3つの要素に参加し、参加することができ、その後「と」と連結最後の要素を追加します。

var fruits = ["Banana", "Orange", "Apple", "Mango"]; 
var energy = fruits.slice(0, fruits.length - 1).join(', '); 
energy += ' and ' + fruits[fruits.length - 1]; 
0

代わりArray.reduce機能を使用して、独自のロジックを実装し、例えば可能性があります

var fruits = ["Banana", "Orange", "Apple", "Mango"]; 
var energy = fruits.reduce(function (p, d, i) { 
    return p + (i === fruits.length - 1 ? ' and ' : ', ') + d; 
}); 
1

あなたは、残念ながら、.joinに関数を渡すことはできませんので、あなたは、ループを反復処理する必要がありますかそしてそれを自分で参加する:

const array = ['banana', 'apple', 'taco'] 
 

 
let result = array[0] 
 
for (let i = 1; i < array.length; i++) { 
 
    if (i < array.length - 1) { 
 
    result += ', ' + array[i] 
 
    } else { 
 
    result += ' and ' + array[i] 
 
    } 
 
} 
 

 
console.log(result)

あなたただし、この機能を作ることができる:あなたは `.reduce`を使用するか、文字列の最後のコンマを置き換えることができます

// General purpose custom/dynamic join function creator. 
 
function dynamicJoin(fn) { 
 
    return function(array) { 
 
    let result = array[0] 
 
    for (let i = 1; i < array.length; i++) { 
 
     const joiner = fn(array[i - 1], array[i], i, array) 
 
     result += joiner + array[i] 
 
    } 
 
    return result 
 
    } 
 
} 
 

 
const joinCommaOrAnd = dynamicJoin(function(a, b, i, arr) { 
 
    return (i === arr.length - 1) ? ' and ' : ', ' 
 
}) 
 

 
console.log(joinCommaOrAnd(['bread', 'fish', 'butter']))