繁体   English   中英

从 function 返回数组值

[英]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>

您的代码中有几个问题:

  1. 在HTML中, click属性应该是onclick
  2. 要在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM