Получить первый элемент из массива или null с помощью Ramda

#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) .