LINUX.ORG.RU

Как функцией перевести двумерный массив в CSV формат и вернуть строку?

 


0

1

Здравствуйте, надо написать функцию, которая переводит двумерный массив в CSV и возвращает строку. Допустимые значения в качестве элементов массива - числа и строки Если встречается функция - выбрасывать ошибку с текстом «Unexpected value» Пример:

func([[1, 2], ['a', 'b']]) // '1,2
a,b'
func([[1, 2], ['a,b', 'c,d']]) // '1,2
"a,b","c,d"'

Сделал так, не проходит тест "корректно экранирует кавычки ":

Expected: """"text""","other ""long"" text""
Received: ""text",other "long" text"

Мой код:

function func(arr) {
return arr
    .map(array => array.map(e => {
        let type = typeof e;
        if (type !== "number" && type !== "string")
            throw new Error("Unexpected value");
        return (type === "string" && e.includes(",")) ? JSON.stringify(e) : e;
    }).join(","))
    .join("\n");
}

Что надо исправить?



Последнее исправление: Pooler (всего исправлений: 1)

Expected: """"text""","other ""long"" text""

Что это за кучка галочек, там пустые элементы что ли, не хочу воображать лицо того, кто такие задания придумывает. Попробуйте добавить ему галочек вокруг элементов.

mydibyje ★★★★
()

Ты делаешь JSON.stringify(e) если у тебя type === "string" && e.includes(",") То есть делаешь стрингифай только если в строке есть запятая. А тест проверяет, как работает твоя прога, если в строке есть кавычки.

goingUp ★★★★★
()
Expected: """"text""","other ""long"" text""

но строго говоря это не валидно, здесь как минимум 1 ковычки не хватает в начале и в конце.

Должно быть так:

Expected: """""text""","other ""long"" text"""
Noob_Linux ★★★★
()
Последнее исправление: Noob_Linux (всего исправлений: 1)
Ответ на: комментарий от Noob_Linux

но строго говоря это не валидно, здесь как минимум 1 ковычки не хватает в начале и в конце.

Это просто при выводе строки (на экран) там добавляется в начало и конец ковычка, хехе.

goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 1)