2024-10-01 01:58:32 +02:00
|
|
|
//go:build js && wasm
|
|
|
|
// +build js,wasm
|
|
|
|
|
|
|
|
package src
|
|
|
|
|
|
|
|
import (
|
|
|
|
"syscall/js"
|
|
|
|
|
|
|
|
"gonum.org/v1/gonum/mat"
|
|
|
|
)
|
|
|
|
|
|
|
|
func Array2DToDense(X [][]float64) *mat.Dense {
|
|
|
|
dense := mat.NewDense(len(X), len(X[0]), nil)
|
|
|
|
for i, row := range X {
|
|
|
|
dense.SetRow(i, row)
|
|
|
|
}
|
|
|
|
return dense
|
|
|
|
}
|
|
|
|
|
2024-10-01 15:41:13 +02:00
|
|
|
func JSFloatArray(arg js.Value) []float64 {
|
|
|
|
arr := make([]float64, arg.Length())
|
|
|
|
for i := 0; i < len(arr); i++ {
|
|
|
|
arr[i] = arg.Index(i).Float()
|
|
|
|
}
|
|
|
|
return arr
|
|
|
|
}
|
|
|
|
|
2024-10-01 01:58:32 +02:00
|
|
|
func JSFloatArray2D(arg js.Value) [][]float64 {
|
|
|
|
arr := make([][]float64, arg.Length())
|
|
|
|
for i := 0; i < len(arr); i++ {
|
|
|
|
arr[i] = make([]float64, arg.Index(i).Length())
|
|
|
|
}
|
|
|
|
for i := 0; i < len(arr); i++ {
|
|
|
|
for j := 0; j < arg.Index(i).Length(); j++ {
|
|
|
|
arr[i][j] = arg.Index(i).Index(j).Float()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return arr
|
|
|
|
}
|
|
|
|
|
|
|
|
func ToJSArray[T any](arr []T) []interface{} {
|
|
|
|
jsArr := make([]interface{}, len(arr))
|
|
|
|
for i, v := range arr {
|
|
|
|
jsArr[i] = v
|
|
|
|
}
|
|
|
|
return jsArr
|
|
|
|
}
|