使用Nan在Node.js附加代码中创建数组

Jay*_*esh 3 javascript node.js node.js-addon

我正在编写Node插件并尽可能多地使用nan库来编写代码.Node项目推荐它,因为它允许您编写与不同版本的v8和节点兼容的代码.

但是,经过多次查看文档后,我还没有找到有关在nan API中处理数组的任何指导.对于基本任务,例如处理由Javascript代码作为参数传递的数组,或者在加载项中实例化新数组对象并将其返回到Javascript代码.我们是否应该直接使用v8::ArrayAPI.我希望API 的Nan :: New部分可以更好地处理这个问题.

我错过了什么吗?

sha*_*a-1 6

搜索一些相关问题的解决方案我发现这个存储库有一些非常好的工作示例.

我只是在这里指出与阵列相关的转换以便快速参考.

在参数中接收数组:

Local<Array> array = Local<Array>::Cast(args[0]); //args[0] holds the first argument

for (unsigned int i = 0; i < array->Length(); i++ ) {
  if (Nan::Has(array, i).FromJust()) {
    //assuming the argument is an array of 'double' values, for any other type the following line will be changed to do the conversion
    double value = Nan::Get(array, i).ToLocalChecked()->NumberValue();

    Nan::Set(array, i, Nan::New<Number>(value + 1));
  }
}
Run Code Online (Sandbox Code Playgroud)

返回一个数组:

//Assuming arr is an 'array' of 'double' values
Local<Array> a = New<v8::Array>(3);
Nan::Set(a, 0, Nan::New(arr[0]));
Nan::Set(a, 1, Nan::New(arr[1]));
Nan::Set(a, 2, Nan::New(arr[2]));

info.GetReturnValue().Set(a); //here 'info' is 'const Nan::FunctionCallbackInfo<v8::Value>& info' received in Nan Method defintion parameter
Run Code Online (Sandbox Code Playgroud)

具体的解决方案可以在这里找到.