Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在数组中添加多个值时遇到问题_Javascript_Arrays_Foreach - Fatal编程技术网

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
    数组。

    这里有多个要点:

  • 函数multiply()没有从
    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;
    }