![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java JavaScript Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Swift) Call a JavaScript Function Passing an Array ArgumentSee more JavaScript ExamplesDemonstrates how to call a JavaScript function with an argument that is an array.Note: This example requires Chilkat v11.4.0 or greater.
func chilkatTest() { var success: Bool = false // This is the JavaScript function we'll call: // function calculateTotal(numbers) { // console.log(numbers); // let total = 0; // // // Loop through every number in the array // for (const num of numbers) { // console.log(num); // total += num; // } // // return total; // } let sbScript = CkoStringBuilder()! success = sbScript.loadFile("js_function_array_arg.js", charset: "utf-8") if success == false { print("\(sbScript.lastErrorText!)") return } let js = CkoJs()! let result = CkoJsonObject()! result.emitCompact = false // Call Eval to add the function to the context's global object success = js.eval(sbScript, result: result) if success == false { // Examine the result for an exception. print("\(result.emit()!)") // Also examine the LastErrorText. print("\(js.lastErrorText!)") return } // ------------------------------------------------------------------------------ // Call the function calculateTotal(numbers) let funcCall = CkoJsonObject()! funcCall.emitCompact = false // Create JSON specifying the function name and arguments // In this case, there is only 1 argument, and it is an array. funcCall.update("name", value: "calculateTotal") // Create the arguments array. let argsArray = CkoJsonArray()! // The 1st argument in the arguments array is itself an array. // Passing -1 indicates to append to the array. let arg = CkoJsonArray()! argsArray.addArrayAt2(-1, jarr: arg) // Fill in the values for the 1st argument. arg.addNumber(at: -1, numericStr: "10.50") arg.addNumber(at: -1, numericStr: "20.00") arg.addNumber(at: -1, numericStr: "5.25") // Add the "args" array to the funcCall. funcCall.appendArrayCopy("args", jarr: argsArray) print("\(funcCall.emit()!)") // The funcCall is as follows. Notice that the 1st (and only) argument is an array. // { // "name": "calculateTotal", // "args": [ // [ // 10.50, // 20.00, // 5.25 // ] // ] // } success = js.callFunction(funcCall, result: result) if success == false { // Examine the result for an exception. print("\(result.emit()!)") // Also examine the LastErrorText. print("\(js.lastErrorText!)") return } print("\(result.emit()!)") // Result: // { // "type": "double", // "value": 35.75 // } // The function also emitted text to the console. let sbOut = CkoStringBuilder()! js.consoleOutputSb(sbOut) print("\(sbOut.getAsString()!)") // Output: // 10.5,20,5.25 // 10.5 // 20 // 5.25 // ----------------------------------------------------------- // Note: If the array argument is simple, this is an alternative // and simpler way of creating the funcCall: funcCall.clear() funcCall.update("name", value: "calculateTotal") funcCall.updateNumber("args[0][0]", numericStr: "10.50") funcCall.updateNumber("args[0][1]", numericStr: "20.00") funcCall.updateNumber("args[0][2]", numericStr: "5.25") print("\(funcCall.emit()!)") }
|
||||
© 2000-2026 Chilkat Software, Inc. All Rights Reserved.