#javascript #ramda.js
Вопрос:
У меня есть массив
const arr1 = ["string1", "string2"] const arr2 = []
И я хочу получить первый элемент этого массива или значение null, если он пуст.
Как я могу сделать это с помощью Ramda?
Комментарии:
1. ФУ, тебе для этого не нужна Рамда:
const firstOrNull = arr =gt; arr[0] ?? null
2. Я бы использовал
const firstOrNull = ([f = null]) =gt; f
Ответ №1:
Вы можете использовать R.propOr()
, чтобы получить значение из объекта или массива по ключу/индексу и вернуть значение по умолчанию, если результат undefined
:
const firstOrNull = R.propOr(null, 0) const arr1 = ["string1", "string2"] const arr2 = [] console.log(firstOrNull(arr1)) console.log(firstOrNull(arr2))
lt;script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.1/ramda.min.js" integrity="sha512-rZHvUXcc1zWKsxm7rJ8lVQuIr1oOmm7cShlvpV0gWf0RvbcJN6x96al/Rp2L2BI4a4ZkT2/YfVe/8YvB2UHzQw==" crossorigin="anonymous" referrerpolicy="no-referrer"gt;lt;/scriptgt;
Комментарии:
1. На Typescript я получил ошибку: аргумент типа «число» не может быть присвоен параметру типа «строка» на 0 из propOr
2. Проблема в основном в том, что TS печатает. Вы можете обойти это вот так
const firstOrNull = propOr(null, 0 as any)
.