我正在使用Node-API构建一个Node.js插件。
基本上,我的算法将一个 js 数组作为输入,然后在插件内部对其进行处理并返回它。
要对数组执行任何逻辑,我需要遍历它。但我不知道怎么做。因为我在他们的文档或示例中没有找到任何与数组迭代相关的文档。
所以我认为这更多的是在C
. 我已经在下面的代码中添加了我尝试过的内容,但没有工作,我已经在下面的代码中注释掉了它。
我还尝试在nodejs 源代码和node-addon-api中找到任何有用的东西,但由于我对此的了解有限,所以我没有。
请指导我如何循环和访问该数组中的每个对象。
napi_value avm_simplify(napi_env env, napi_callback_info info) {
napi_status status;
napi_value value;
size_t argc = 1;
napi_value args[1];
status = napi_get_cb_info(env, info, &argc, args, NULL, NULL);
STATUS_CHECK
if (argc < 1) {
napi_throw_type_error(env, NULL, WRONG_ARGUMENTS_ERROR);
return NULL;
}
bool is_array = 0;
status = napi_is_array(env, args[0], &is_array);
STATUS_CHECK
if (!is_array) {
napi_throw_type_error(env, NULL, "Argument type should be an array");
return NULL;
}
// args[0] equals to something like
// [1, 2, 3, 4, 5]
// which is the user input (js array)
napi_value array = args[0];
/*
// This is what I wan't to do.
int length = sizeof(array) / sizeof(array[0]);
for (size_t i = 0; i < length; i++) {
napi_value object = array[i];
// do some logic with object
}
*/
return value;
}
我知道这应该更容易使用C++
,但我的模块将来主要是指C
库。
提前致谢。