Vlad
ну, а полифилы зачем нужны
Vlad
на самом деле в рамде есть R.merge & R.mergeAll
Vladislav
Ну я в принципе. Полифилы тоже не тру, потому что если полифилить все фичи, то это охуеть
Vlad
Object.keys && Object.values тоже далеко не везде есть
Vlad
у меня кстати, ещё два доклада готовы
Vlad
про асинк http://iamstarkov.com/fp-js-workshop/03-async/
Vlad
и про контракты https://iamstarkov.com/fp-js-workshop/04-contracts/ (немного холиварная тема)
Дима
@iamstarkov кстати, посоветуй, как в функциональщине сделать функцию для N аргументов из функции для 2х аргументов?
У меня такое ощущение, что ты хочешь передать key и value, иначе почему x2 аргументов, не так ли?)
Vladislav
Object.keys && Object.values тоже далеко не везде есть
С ними все збс, как ни странно
Vlad
С ними все збс, как ни странно
орли https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values
Vladislav
У меня такое ощущение, что ты хочешь передать key и value, иначе почему x2 аргументов, не так ли?)
шта, нет, я спрашивал про конкретный пример реализации, потому что у меня много похожих случаев
Vlad
Дима
ну вот я и спрашиваю про похожие случаи, если тебе нужно передать пару значений, то что бы это могло быть, например
Vladislav
орли https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
Michael
Кстати может кто-нибудь сталкивался, нужен DSL или что-нибудь вроде схемы, для валидации сложных форм
Vladislav
в общем, одно норм, а другое нет (:
Дима
К тому же, не вижу причины, почему бы не передавать всё в массиве
Дима
По нормальному, а не полотном аргументов
Vladislav
но вообще да, проще сразу все со всем
Vlad
массивом проще будет
Vlad
да
Vlad
и тогда можешь будет использовать каррированый reduce
Dmitry
Vlad
@kozulya // reduce :: Function -> ( a-> b) -> [a] -> Array -> b const reduce = curry( (fn, init, arr) => arr.reduce(fn, init) ); // merge :: Object -> Object -> Object const merge = (one, two) => Object.assign({}, one, two); // mergeAll :: [Object] -> Object const mergeAll = reduce(merge, {}); //> arr => reduce(merge, {}, arr);
Vlad
гугл знает, только не твой персонализированный =))
Dmitry
Чорт
Anton
Anton
Пришла рассылка оО
Anton
Это действительно так чтоль?
Ruslan
Хахах, а без флага g нормальная семья будет?
Дима
Это действительно так чтоль?
Ну это юникод символы же, емнип
Дима
Меня больше радует всякое типа const ಠ_ಠ = "abc", что является валидным js кодом 😄
Дима
arity с неопределенным списком переменных это довольно жестко))
Дима
В любом случае, тут или массив, или reduce)
DeniskaAb
https://www.youtube.com/watch?v=BcmUOmvl1N8
DeniskaAb
Вэбсервэр
Ruslan
Вэбсервэр
Уэбсэрвр
DeniskaAb
Он там только четыре слова говорит?
Vladislav
Vladislav
че-то такое?
Vlad
че-то такое?
Я не понял что это
Vlad
Ааа
Дима
Ехал редьюс через редьюс)
Vladislav
ну вот да, че-то меня смущает такое кол-во редьюсов на квадоратную линию кода (:
Vlad
Аа понял
Vlad
Напиши конкат для двух массивов
Vlad
Потом зареюзай редьюс из предыдущего сообщения и прокинь в него конкат для двух и пустой массив
Vladislav
Напиши конкат для двух массивов
const joinArrays = (a, b) => { const length = Math.max(a.length, b.length) const result = new Array(length) return map((v, i) => [a[i], b[i]], result) } у меня получилось вот так
Vladislav
хотя оно плохо расширяется, хммм
Дима
чочо
R.unnest([1, [2], [[3]]]); //=> [1, 2, [3]] R.unnest([[1, 2], [3, 4], [5, 6]]); //=> [1, 2, 3, 4, 5, 6] R.flatten([1, 2, [3, 4], 5, [6, [7, 8, [9, [10, 11], 12]]]]); //=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] На твой вкус 😉🙃
Vladislav
не, это вообще не то
Vladislav
это [1,2] + [3,4] = [[1,3], [2,4]]
Дима
Уверен?)
Дима
Энивей, там же есть и concat [1,2]+[3,4] = [1,2,3,4]
Дима
На твой вкус всё, опять же
Vladislav
слушай, мне нужна конкретная операция
Vladislav
а именно слить массивы так, чтобы получился двумерный массив
Дима
Ты меня не понимаешь. Напиши конкретные входные данные и выходные
Дима
Бестолку описывать данные на словах)
Vladislav
in a = [1,2] in b = [3,4] out = [[1,3], [2,4]]
Vitaly
a.map((e, i) => [a[i], b[i]])
Дима
Да ну, бросьте 😄
Дима
А, чорт
Дима
R.zip
Vladislav
a.map((e, i) => [a[i], b[i]])
нихуюшеньки, а если b больше по размеру?
Vladislav
R.zip
оно, да
Vitaly
это псевдокод, гуглите zip из любой библиотеки
Vladislav
теперь надо сделать суперзип на все массивы
Дима
Что значит суперзип?)) Напиши такой случай, чтобы не склеить его зипом, и желательно сразу с твоим граничным условием ну типа in a = [1,2] in b = [3,4,5,6] in c = [7,,,,9] out ....
Дима
Правильная постановка задачи - половина ответа 🙃
Vladislav
для двух массивов – не проблема, как видишь
Дима
Так оно вообще не проблема, просто ты формулируешь задачу поочерёдно или сразу в виде кода))