问题描述
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);