如果每个薪资都是对象的属性,并且每个对象都存储在数组中,那么如何更改所有薪资值并将其提高一个百分比?例如,增长了10 %,我不得不把结果乘以最接近的整数:
raiseSalary([
{ name: "Ali", salary: 3000 },
{ name: "Rob", salary: 2000 },
{ name: "Adam", salary: 4500 },
], 10)上述呼吁应返回:
[
{ name: 'Ali', salary: 3300 },
{ name: 'Rob', salary: 2200 },
{ name: 'Adam', salary: 4950 }
]这是我写的代码:
function raiseSalary(arr, raise) {
if (arr.length === 0) {
return [{}];
} else {
const raiseArray = arr.map((salaryObj) => {
return (salaryObj.salaryObj / 100) * 10;
});
}
}发布于 2022-06-03 15:05:20
你快到了。只是几点
就像当数组有零元素时返回某项一样,当数组中有元素时,您必须返回一些内容;在这种情况下,修改后的数组100+raise
raise提高工资,而不是乘以raise,在本例中,乘以10并不需要硬代码D12,因为您要将它传递给函数;它允许您在不更改函数的情况下传递5、15或其他提升值。
const input = [{ name: "Ali", salary: 3000 }, { name: "Rob", salary: 2000 }, { name: "Adam", salary: 4500 }],
increment = 10;
function raiseSalary(arr, raise) {
if (arr.length === 0) {
return [];
} else {
return arr.map((salaryObj) => {
return ({name:salaryObj.name, salary:(salaryObj.salary / 100) * (100+raise)});
});
}
}
console.log( raiseSalary(input, increment) );
或者.
只需返回修改后的数组,而不需要测试元素,也可以使用对象析构。
const input = [{ name: "Ali", salary: 3000 }, { name: "Rob", salary: 2000 }, { name: "Adam", salary: 4500 }],
increment = 10;
function raiseSalary(arr, raise) {
return arr.map(({name,salary}) => {
return ({name, salary: salary/100*(100+raise)});
});
}
console.log( raiseSalary(input, increment) );
console.log( raiseSalary([], increment) );
发布于 2022-06-03 14:06:27
map方法应该做您想做的事情。注意salaryObj的析构以避免对原始对象进行操作。
const percent = 10;
const multiplier = 1 + (percent / 100);
const salaries = [
{ name: "Ali", salary: 3000 },
{ name: "Rob", salary: 2000 },
{ name: "Adam", salary: 4500 },
];
const newSalaries = salaries.map((salaryObj) => {
return {
...salaryObj,
salary: salaryObj.salary * multiplier,
};
});
console.log(newSalaries);发布于 2022-06-03 15:02:29
下文介绍的是实现预期目标的一种可能方法。
代码片段
const addRaise = (arr, pcnt) => (
arr.map(
({ salary, ...rest }) => ({
...rest,
salary: ( +salary * (+pcnt + 100) / 100 )
})
)
);
/*
// method to raise salary by "pcnt" percent
const addRaise = (arr, pcnt) => (
// iterate over array "arr"
arr.map(
// destructure to access "salary"
({ salary, ...rest }) => ({
...rest, // all other props retained as-is
// salary updated to be 10% more than current
salary: ( +salary * (+pcnt + 100) / 100 )
})
)
);
*/
const dataArr = [{
name: "Ali",
salary: 3000
},
{
name: "Rob",
salary: 2000
},
{
name: "Adam",
salary: 4500
},
];
console.log(
'adding raise of 10%...\n',
'new array:\n',
addRaise(dataArr, 10)
);
解释
注释添加到上面的片段中。
https://stackoverflow.com/questions/72490688
复制相似问题