微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用函数返回数组

如何解决使用函数返回数组

var experiences =[3,8,10,5,6,15,7,27];


function salary (experience)
{
    var salaries =[];
    for(var i =0;i<experience.length;i++)
    {
        if(experience[i]<5)
        {
            salaries.push=(experience[i]*10000);
        }
     else if(experience[i]>=5 && experience[i]<10)
    {
        salaries.push=(experience[i]*12000); 
    }
    else if(experience[i]>=10 && experience[i]<20)
    {
        salaries.push=(experience[i]*15000);
    }
    else
    {
        salaries.push=(experience[i]*20); 
    }
    return salaries;
}  

 }
var salaries= salary(experiences);
console.log(salaries);

1。我在这里使用了条件语句 2.函数返回一个空数组。 3.我在哪里错? 3.请问有人可以解释吗?

解决方法

您不需要使用Push。只需用新值重写现有值! 希望对您有所帮助。

var experiences = [3,8,10,5,6,15,7,27];

function salary(experiences) {
    var cloneArray = [...experiences]; // <- Clone Array
    for (var i = 0; i < cloneArray.length; i++) {
        if (cloneArray[i] < 5) {
            cloneArray[i] = (cloneArray[i] * 10000);
        }
        else if (cloneArray[i] < 10) {
            cloneArray[i] = (cloneArray[i] * 12000);
        }
        else if (cloneArray[i] < 20) {
            cloneArray[i] = (cloneArray[i] * 15000);
        }
        else {
            cloneArray[i] = (cloneArray[i] * 20);
        }
    }

    return cloneArray;
}

var salaries = salary(experiences);
console.log(salaries); // <- The result is in the cloned array

console.log(experiences); // <- The original array has not been changed

,

简单的答案是,您在应有salaries.push=的几个地方拥有salaries.push。您的代码之前所做的是将内置方法push重新分配为数字,而不是调用push。这样就可以灵活地使用JavaScript,但这不是您想要的。

您可以轻松地修复代码,但是由于您具有1对1的映射关系,因此它是内置map方法的理想选择。这是使用map的解决方案。注意:我认为您要的是20000,而不是20。

var experiences = [3,27];

function salary(experiences) {
    return experiences.map(experience => {
        if (experience < 5) {
            return experience * 10000;
        }
        if (experience < 10) {
            return experience * 12000;
        }
        if (experience < 20) {
            return experience * 15000;
        }
        return experience * 20000;
    });
}

var salaries = salary(experiences);
console.log(salaries);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。