📅  最后修改于: 2023-12-03 14:56:23.311000             🧑  作者: Mango
有时候我们需要将一个数组中的每个元素替换成对应的等级,比如将分数转换成等级,将年龄分段等等。下面是一个可以将数组中的元素替换成对应等级的函数:
/**
* 将 Array 中的每个元素替换成对应等级
* @param {array} arr - 需要替换的数组
* @param {array} levels - 等级数组,每个元素表示一个等级
* @param {function} fn - 传入一个方法,用于获取每个元素对应的等级值
*/
function replaceWithLevels(arr, levels, fn) {
for (let i = 0; i < arr.length; i++) {
let index = fn(arr[i]); // 获取当前元素对应等级数组的下标
arr[i] = levels[index]; // 将元素替换成对应等级
}
}
这个函数接收三个参数,第一个是需要替换的数组,第二个是等级数组,每个元素表示一个等级,第三个参数是一个方法,用于获取每个元素对应的等级值。函数会遍历数组中的每个元素,获取它对应等级数组的下标,并将元素替换成对应等级。
使用示例:
let scores = [80, 90, 70, 60, 85];
let levels = ['D', 'C', 'B', 'A', 'S'];
replaceWithLevels(scores, levels, function(score) {
if (score < 60) {
return 0;
} else if (score < 70) {
return 1;
} else if (score < 80) {
return 2;
} else if (score < 90) {
return 3;
} else {
return 4;
}
});
console.log(scores); // 打印 ['B', 'A', 'C', 'D', 'S']
上面的例子将分数数组中的每个元素替换成等级,并按顺序打印出来。在示例中,等级数组中的元素顺序必须和分数对应等级的下标一一对应。