如何在Javascript中返回计算的String表示形式

时间:2018-02-17 18:53:03

标签: javascript

我目前正在尝试完成intro2Javascript课程的作业。这个问题基本上要求我返回2个参数(num,numMultiple)的倍数的字符串。每次它将值i = numMultiple递增到5 x 1 = 5\n 5 x 2 = 10\n 5 x 3 = 15\n 5 x 4 = 20\n。例如:

function showMultiples(num, numMultiples) { var result; for (i = 1; i <= numMultiples; i++) { result = num * i multiples = "" + num + " x " + i + " = " + result + "\n" return (multiples) } }

这是我的尝试:

console.log('showMultiples(2,8) returns: ' + showMultiples(2, 8));
console.log('showMultiples(3,2) returns: ' + showMultiples(3, 2));
console.log('showMultiples(5,4) returns: ' + showMultiples(5, 4));
console.log('\n');

...并且因为分配带有预先编写的控制台日志:

showMultiples(2,8) returns: 2 x 1 = 2
Scratchpad/1:59:1
showMultiples(3,2) returns: 3 x 1 = 3
Scratchpad/1:60:1
showMultiples(5,4) returns: 5 x 1 = 5

这是我的输出:

re.findall('<continue rvcontinue="([^"]+)"',joan)

更新

enter image description here

3 个答案:

答案 0 :(得分:2)

你做错了两件事:

1)你在循环第一次迭代后返回

2)您正在分配多个而不是附加到它。

由于您要收集所有值,然后首先显示最终结果,我将所有值添加到数组中,然后使用unshift()将最终元素(结果)添加到数组的开头数组。然后我使用join()返回所需数组的字符串表示。

function showMultiples(num, numMultiples) {
  var result;
  var multiples = [];
  for (let i = 1; i <= numMultiples; i++) {
    result = num * i
    multiples.push("" + num + " x " + i + " = " + result + "\n")
  }
  multiples.unshift(multiples[multiples.length-1]);
  return (multiples.join(''))
}

console.log('showMultiples(2,8) returns: ' + showMultiples(2, 8));
console.log('showMultiples(3,2) returns: ' + showMultiples(3, 2));
console.log('showMultiples(5,4) returns: ' + showMultiples(5, 4));
console.log('\n');

答案 1 :(得分:1)

你需要声明所有变量,因为没有你得到全局变量(除此之外它在'strict mode'中不起作用)。

第二点是使用带有空字符串的multiples来收集所有中间结果,并在函数末尾返回该值。

为了保留最后的结果,您可以使用另一个变量并在结尾追加该值以便返回。

function showMultiples(num, numMultiples) {
    var i,
        result,
        multiples = "",
        temp = '';

    for (i = 1; i <= numMultiples; i++) {
        result = num * i;
        temp = num + " x " + i + " = " + result + "\n";
        multiples += temp;
    }

    return temp + multiples;
}

console.log('showMultiples(2,8) returns: ' + showMultiples(2, 8));
console.log('showMultiples(3,2) returns: ' + showMultiples(3, 2));
console.log('showMultiples(5,4) returns: ' + showMultiples(5, 4));

答案 2 :(得分:0)

正如其他答案所说,你的问题是多方面的。

您正在清除每次迭代并存储新值,但您不希望这样,您希望添加新结果,并且这样做是为了使用此代码:

multiples = multiple + "" + num + " x " + i + " = " + result + "\n"

可以在其他人回答的内容中进行压缩:

multiples += "" + num + " x " + i + " = " + result + "\n"

可能你已经知道了,但要确保:

a += b ---> a = a + b
a -= b ---> a = a - b
a *= b ---> a = a * b

还有更多。