首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在JavaScript中使用Foreach实现两个多行文本框的乘法

如何在JavaScript中使用Foreach实现两个多行文本框的乘法
EN

Stack Overflow用户
提问于 2022-05-18 20:21:00
回答 2查看 41关注 0票数 0

我正在学习JavaScript中的一些新概念。能帮我达到以下的效果吗?

Values1(this.getField("Text6"))是一个多行文本框

Values2(this.getField("Text7"))是一个多行文本框

结果(this.getField("Text8"))是1和Value2的乘积。

测试了下面的代码,通过使用foreach method.But只显示结果框中的值2,我不知道如何在其中执行乘法?

代码语言:javascript
运行
复制
var values1 = this.getField("Text6").value.split('\r');
var values2 = this.getField("Text7").value.split('\r');
this.getField("Text8").value = "";

values2.forEach(element => this.getField("Text8").value +=(element+'\n'));

电流输出:

2

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-18 20:42:05

getField不是一个本机JavaScript函数。我将在下面的片段中定义它。

几点意见:

  • split('\r')可能不是获得行的最佳方法,因为其中也可能有\n字符。相反,我会用正则表达式([\d.]+)来匹配数字。
  • 当这种拆分产生字符串时,我会立即将它们转换为数字,方法是将Number函数应用于它们。
  • 与其用+=累积结果,不如用产品创建一个数组,然后将它们连接到多行文本中,分配(一次)给字段。
  • 使用循环期间可以得到的索引,并使用该索引获取要乘的其他数字。

代码语言:javascript
运行
复制
var getField = document.getElementById.bind(document);

var collect = id => (this.getField(id).value.match(/[\d.]+/g) || []).map(Number);

var values1 = collect("Text6");
var values2 = collect("Text7");
this.getField("Text8").value = values2.map((element, i) =>  element*values1[i]).join("\n");
代码语言:javascript
运行
复制
textarea {
  width: 5em;
  height: 150px;
  margin-right: 30px;
}
代码语言:javascript
运行
复制
<textarea  id=Text6>
1
2
3
4
</textarea>
<textarea  id=Text7>
4
5
6
7
</textarea><textarea  id=Text8></textarea>

票数 1
EN

Stack Overflow用户

发布于 2022-05-18 20:25:14

forEach回调的第二个参数是数组索引。您可以使用它来索引到values1中,这样就可以将它们相乘。

代码语言:javascript
运行
复制
values2.forEach((element, index) => 
    this.getField("Text8").value +=(element * values1[index] + '\n'));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72295486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档