では「最後だけ『と』にする自然な日本語リスト」の作り方を見てみましょう。
カートの例
const cart = [
{ name: 'Tシャツ', price: 1500, quantity: 2 },
{ name: 'ジーンズ', price: 5000, quantity: 1 },
{ name: '帽子', price: 2000, quantity: 1 }
];
JavaScript方法1: 配列操作で最後だけ特別扱い
const names = cart
.filter(item => item.quantity > 0)
.map(item => item.name);
let list;
if (names.length === 1) {
list = names[0];
} else {
list = names.slice(0, -1).join(', ') + ' と ' + names[names.length - 1];
}
console.log(list); // "Tシャツ, ジーンズ と 帽子"
JavaScript👉 ポイントは 最後の要素だけ別に取り出す こと。
🔹 方法2: reduce で一気に組み立てる
const names = cart
.filter(item => item.quantity > 0)
.map(item => item.name)
.reduce((acc, name, index, arr) => {
if (index === 0) return name; // 最初の要素
if (index === arr.length - 1) return acc + ' と ' + name; // 最後の要素
return acc + ', ' + name; // 途中の要素
}, '');
console.log(names); // "Tシャツ, ジーンズ と 帽子"
JavaScript👉 reduce を使うと「最初・途中・最後」で条件分岐して自然な文章を作れる。
まとめ
- シンプルに書くなら方法1(slice + join)
- 関数型っぽくまとめたいなら方法2(reduce)
- 実務では「ユーザーに見せるリスト」を作るときに便利
💡 さらに発展させると、
- 「3つ以上なら『…など』を付ける」
- 「英語風に ‘A, B, and C’ にする」
といった多言語対応や表現の工夫もできます。
