首页 > 解决方案 > C 标准库中的函数是否有 JavaScript 端口?

问题描述

我正在将一些 C 代码移植到 JavaScript。strcspn我不想像我自己那样实现基本功能

const strcspn = (a, b) => {
  for (let [index, c] of [...a].entries()) {
    if (b.includes(c)) {
      return index
    }
  }
  return a.length
}

是否有可以从中复制或导入的项目?

标签: javascriptc

解决方案


Javascript 中没有库可以提供与 C 标准库相同的功能(至少我知道)。

所以你必须自己重写函数(不是特别困难,因为 Javascript 有很多内置函数可以帮助你)。

更好的是不要在 Javascript 中使用 C 标准函数:直接修改 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;
}

推荐阅读