📜  用对应的等级替换 Array 的每个元素(1)

📅  最后修改于: 2023-12-03 14:56:23.311000             🧑  作者: Mango

用对应的等级替换 Array 的每个元素

有时候我们需要将一个数组中的每个元素替换成对应的等级,比如将分数转换成等级,将年龄分段等等。下面是一个可以将数组中的元素替换成对应等级的函数:

/**
 * 将 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']

上面的例子将分数数组中的每个元素替换成等级,并按顺序打印出来。在示例中,等级数组中的元素顺序必须和分数对应等级的下标一一对应。