#javascript #c
Вопрос:
Я переношу некоторый код C на JavaScript. Я бы хотел, чтобы мне не приходилось реализовывать базовые функции, как strcspn
я сам
const strcspn = (a, b) => {
for (let [index, c] of [...a].entries()) {
if (b.includes(c)) {
return index
}
}
return a.length
}
Есть ли проект, из которого я могу их скопировать или который я мог бы импортировать?
Комментарии:
1. Функция, которую вы показываете, не совсем похожа на
strcspn
функцию. Если символ не найден, вы возвращаетеa.length
, который будет недопустимым индексом в строке Javascript.
Ответ №1:
В Javascript нет библиотеки, которая обеспечивала бы те же функции, что и стандартная библиотека C (по крайней мере, мне это известно).
Поэтому вам придется переписать функции самостоятельно (не особенно сложно, так как в Javascript есть много встроенных функций, которые могут вам помочь).
Еще лучше: не используйте стандартные функции C в Javascript: измените код C напрямую, чтобы написать более идиоматичный код Javascript. Что я имею в виду:
// a C code that uses `strtok()` to split a string may be rewritten in JS as:
const splitted = str.split(" ");
// it's cleaner and you don't need to rewrite `strtok()` in JS
ПРИМЕЧАНИЕ: ваша реализация strcspn()
неверна. Правильная реализация в Javascript была бы:
function strcspn(dest, src) {
let res = 0;
for (let i = 0; i < dest.length; i = 1) {
if (src.includes(dest.charAt(i))) {
break;
}
res = 1;
}
return res;
}