Hello,
is there an easy way to convert between
* JavaScript-Array and SpiderBasic-Array and
* JavaScript-JSON and SpiderBasic-JSON
(and vice versa)?
Thanks in advance & Greetings ... Peter
JS-Array <-> SB-Array & JS-JSON <-> SB-JSON?
Re: JS-Array <-> SB-Array & JS-JSON <-> SB-JSON?
ok, here's my first attempt for JavaScript-Array <-> SpiderBasic-Array and vice versa:
Converting a SpiderBasic-Array to a JavaScript-Array:
Example (JsArrayToSbArray()):
Converting a JavaScript-Array to a SpiderBasic-Array:
Example (JsArrayToSbArray()):
to be continued...
Contributions are welcome!
Greetings ... Peter
Converting a SpiderBasic-Array to a JavaScript-Array:
Code: Select all
Procedure SbArrayToJsArray(*SbArray, Clone = #False)
If Clone
! return p_sbarray.array.slice(0);
Else
! return p_sbarray.array;
EndIf
EndProcedure
Code: Select all
EnableExplicit
Define Counter
Debug "SbArray:"
; create a SB-Array:
Dim SbArray(10)
; fill in some values
For Counter = 0 To ArraySize(SbArray())
SbArray(Counter) = Counter
Next
; debug the values
For Counter = 0 To ArraySize(SbArray())
Debug SbArray(Counter)
Next
Debug "JsArray:"
Define JsArray
JsArray = SbArrayToJsArray(SbArray())
! for (let counter in v_jsarray) {
! spider.debug.Print(v_jsarray[counter]);
! }
Code: Select all
Procedure JsArrayToSbArray(JsArray, *SbArray, Clone = #False)
! // getting array-dimensions:
! var dimensions = [];
! var arr = v_jsarray;
! for (;;) {
! dimensions.push(arr.length);
! if (Array.isArray(arr[0])) {
! arr = arr[0];
! } else {
! break;
! }
! }
If Clone
! p_sbarray.array = v_jsarray.slice(0);
Else
! p_sbarray.array = v_jsarray;
EndIf
! p_sbarray.dimensions = [];
! for (var counter = 0; counter < dimensions.length; counter ++) {
! p_sbarray.dimensions.push(dimensions[0]);
! }
! p_sbarray.nbDimensions = dimensions[1];
EndProcedure
Code: Select all
Dim SbArray(0)
Define JsArray
! v_jsarray = [ 1, 2, 3, 4, 5 ];
Debug ArraySize(SbArray())
JsArrayToSbArray(JsArray, SbArray())
Debug ArraySize(SbArray())
For Counter = 0 To ArraySize(SbArray()) - 1
Debug SbArray(Counter)
Next
Contributions are welcome!
Greetings ... Peter