---
id: 596e414344c3b2872167f0fe
title: Comma quibbling (створення рядків значень розділених комою)
challengeType: 5
forumTopicId: 302234
dashedName: comma-quibbling
---
# --description--
Comma quibbling це завдання вперше встановлене Еріком Ліппертом в його блозі [blog](https://blogs.msdn.com/b/ericlippert/archive/2009/04/15/comma-quibbling.aspx).
# --instructions--
Напишіть функцію для генерації вихідного рядка, який є об'єднанням вхідних слів з списку/послідовності, де:
- Введення без слів повертає вихідний рядок лише з двох дужок (
"{}"
)
- Введення лише одного слова, наприклад
["ABC"]
, повертає вихідний рядок з слова всередині двох дужок, наприклад "{ABC}"
- Введення двох слів, наприклад
["ABC", "DEF"]
, повертає вихідний рядок з двох слів всередині двох дужок з розділяючим словом " and "
, наприклад "{ABC and DEF}"
- Введення трьох і більше слів, наприклад
["ABC", "DEF", "G", "H"]
, повертає вихідний рядок з усіх слів, крім останнього, розділеного на ", "
, а останнє слово розділене допоможіним " and "
і всіма дужками; наприклад "{ABC, DEF, G and H}"
Перевірте вашу функцію з наступною серією вхідних даних, показуючи ваш вихідний результат тут на сторінці:
- [] # (Без вхідних слів).
- ["ABC"]
- ["ABC", "DEF"]
- ["ABC", "DEF", "G", "H"]
**Зверніть увагу:** Припустіть, що слова не є порожніми рядками у верхньому регістрі для цього завдання.
# --hints--
`quibble` має бути функцією.
```js
assert(typeof quibble === 'function');
```
Функція `quibble(["ABC"])` має повернути рядок.
```js
assert(typeof quibble(['ABC']) === 'string');
```
Функція `quibble([])` має повернути "{}".
```js
assert.equal(quibble(testCases[0]), results[0]);
```
Функція `quibble(["ABC"])` має повернути "{ABC}".
```js
assert.equal(quibble(testCases[1]), results[1]);
```
Функція `quibble(["ABC", "DEF"])` має повернути "{ABC and DEF}".
```js
assert.equal(quibble(testCases[2]), results[2]);
```
Функція `quibble(["ABC", "DEF", "G", "H"])` має повернути "{ABC,DEF,G and H}".
```js
assert.equal(quibble(testCases[3]), results[3]);
```
# --seed--
## --after-user-code--
```js
const testCases = [[], ["ABC"], ["ABC", "DEF"], ["ABC", "DEF", "G", "H"]];
const results = ["{}", "{ABC}", "{ABC and DEF}", "{ABC,DEF,G and H}"];
```
## --seed-contents--
```js
function quibble(words) {
return true;
}
```
# --solutions--
```js
function quibble(words) {
return "{" +
words.slice(0, words.length - 1).join(",") +
(words.length > 1 ? " and " : "") +
(words[words.length - 1] || '') +
"}";
}
```