使用函数返回数组

问题描述

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);