[英]Returning Array value from a function
我在从乘法 function 返回数组值时遇到问题。 我想知道什么是最好的方法? 感谢任何帮助。 谢谢
<head>
<script>
function test() {
let list1 = [ 17, 8, 9, 5, 20 ];
let list2 = [ 12, 4, 8, 15, 17, 5, 20, 11 ];
// Test the multiply function by calling it two times.
let mult1 = multiply(list1,3);
let mult2 = multiply(list2,2);
function multiply(list,x) {
var myArray = [0];
for (i = 0; i < list.length; i++) {
myArray[i] = list[i] * x;
}
return myArray;
}
let output = mult1 + '<br>' + mult2;
</script>
</head>
<body>
<button type="button" click="test()">Compute</button>
<p id="output"></p>
</body>
您的代码中有几个问题:
click
属性应该是onclick
p
标签中显示 output:首先,您需要通过 ID 获取元素。 然后,将值附加到innerHTML
。 function test() { let list1 = [17, 8, 9, 5, 20]; let list2 = [12, 4, 8, 15, 17, 5, 20, 11]; // Test the multiply function by calling it two times. let mult1 = multiply(list1, 3); let mult2 = multiply(list2, 2); let output = document.getElementById("output"); output.innerHTML = mult1 + '<br>' + mult2; function multiply(list, x) { var myArray = [0]; for (i = 0; i < list.length; i++) { myArray[i] = list[i] * x; } return myArray; } }
<head> </head> <body> <button type="button" onclick="test()">Compute</button> <p id="output"></p> </body>
首先,您错过了测试function 的一个花括号。
function test() {
let list1 = [ 17, 8, 9, 5, 20 ];
let list2 = [ 12, 4, 8, 15, 17, 5, 20, 11 ];
// Test the multiply function by calling it two times.
let mult1 = multiply(list1,3);
let mult2 = multiply(list2,2);
// You miss this curly brace below
}
其次,您不能调用 mult1 和 mult2,因为它们是在 function scope 中声明的。
/* This function creates a scope
* so every variable is declared in this function cannot be called outside
*/
function test() {
let list1 = [ 17, 8, 9, 5, 20 ];
let list2 = [ 12, 4, 8, 15, 17, 5, 20, 11 ];
// Test the multiply function by calling it two times.
let mult1 = multiply(list1,3);
let mult2 = multiply(list2,2);
}
console.log(mult1, mult2) // undefined, undefined
// Uncaught ReferenceError: mult1 is not defined
let output = mult1 + '<br>' + mult2;
您可以按以下方式解决此问题
function test() {
let list1 = [ 17, 8, 9, 5, 20 ];
let list2 = [ 12, 4, 8, 15, 17, 5, 20, 11 ];
// Test the multiply function by calling it two times.
let mult1 = multiply(list1,3);
let mult2 = multiply(list2,2);
// Return value here
return { mult1, mult2 }
}
// Read it here
let { mult1, mult2 } = test();
let output = mult1 + '<br>' + mult2;
你可以像这样实现它:
function test() { let list1 = [ 17, 8, 9, 5, 20 ]; let list2 = [ 12, 4, 8, 15, 17, 5, 20, 11 ]; const multiply = (list, x) => list.map(num => num * x); return [ multiply(list1, 3), multiply(list2, 2) ]; } const [ mult1, mult2 ] = test(); const output = mult1 + '<br>' + mult2; // Reflect the result inside your div#output element document.getElementById('output').innerHTML = output;
<div id="output"></div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.