Javascript 在数组中添加多个值时遇到问题
我试图学习更多关于数组的知识,所以我只编写了这个简单的函数:Javascript 在数组中添加多个值时遇到问题,javascript,arrays,foreach,Javascript,Arrays,Foreach,我试图学习更多关于数组的知识,所以我只编写了这个简单的函数:(出于测试目的,我从一个onClick调用doThis) 我的问题有两个方面: var产品正在返回未定义 当我在调试器中单步执行代码时,它会显示正确执行的算法,但它不会在变量multi中存储多个值 最终目标是让var产品持有multi数组。这里有多个要点: 函数multiply()没有从list.forEach()返回返回值。在list.forEach(函数(元素){ 返回 返回值 要返回每次迭代的结果,请使用或手动将每个返回值添加
(出于测试目的,我从一个
onClick
调用doThis
)
我的问题有两个方面:var产品
正在返回未定义
multi
中存储多个值最终目标是让
var产品
持有multi
数组。这里有多个要点:
list.forEach()返回返回值。在list.forEach(函数(元素){
要返回每次迭代的结果,请使用或手动将每个返回值添加到数组中 请参见下面代码段中的更改 要了解有关map()和类似函数的更多信息,请尝试
函数doThis(){
var乘数=3
变量列表=[23,54,23,25,65]
var乘积=乘法(列表,乘法器)
console.log('products:',products)
}
函数乘法(列表,乘法器){
返回列表.map(
功能(元素){
var multi=[元素*乘数]
返回多个
}
);
}
document.getElementById('doThis')。addEventListener('click',doThis);
doThis()
在数组上的forEach
函数中使用return
,将不会更改原始数组的值
您需要指定要设置值的位置。我建议在forEach
匿名函数中使用第二个参数,作为元素的索引
然后您可以轻松地执行list[index]=“我的新值”
另外,将乘法操作的值放在括号之间(您已经做了var multi=[element*multiplier];
)会为每个值创建一个元素数组
下面是我如何保持一维数组的:
函数doThis(){
var乘数=3
变量列表=[23,54,23,25,65]
var乘积=乘法(列表,乘法器)
console.log(产品)
}
函数乘法(列表,乘法器){
list.forEach(函数(元素、索引){
列表[索引]=元素*乘数
});
退货清单;
}
doThis();
在学习数组时,可以使用for
循环:
function multiply(list, multiplier) {
var multi = [];
for (i = 0; i < list.length; i++) {
multi.push(list[i] * multiplier)
}
return multi;
}
函数乘法(列表,乘法器){
var多重=[];
对于(i=0;i
当您计划从现有数组返回新数组时,请使用map()
。forEach()
允许您迭代该数组,但不返回任何新数组
函数doThis(){
var乘数=3;
var列表=[23,54,23,25,65];
var乘积=乘法(列表,乘法器);
控制台日志(产品);
}
函数乘法(列表,乘法器){
返回列表.map(函数(元素){
返回元素*乘法器;
});
}
doThis();
您应该将乘法项推送到某个数组,循环后可以返回该数组。请参考此数组:
function doThis() {
var multiplier = 3
var list = [23, 54, 23, 25, 65]
var products = multiply(list, multiplier)
console.log(products)
}
function multiply(list, multiplier) {
var multi = [] ;
list.forEach(
function (element){
multi.push(element * multiplier)
console.log(multi)
//return multi
}
);
return multi ;
}
function multiply(list, multiplier) {
var multi = [];
for (i = 0; i < list.length; i++) {
multi.push(list[i] * multiplier)
}
return multi;
}