js:实现一个类似Python的range函数生成数字序列

/**
 * 生成一个指定起始值和结束值的序列
 * 类似Python的range函数
 * @param {Number} start 起始值
 * @param {Number} end 结束值
 * @param {Number} step 步长
 * @returns {Array} 序列
 * eg:
 * range(2011, 2022);
 *
 * [
 *   2011, 2012, 2013,
 *   2014, 2015, 2016,
 *   2017, 2018, 2019,
 *   2020, 2021, 2022
 * ]
 */
function range(start, end, step = 1) {
    
    
  let current = start;
  let list = [];

  while (current <= end) {
    
    
    list.push(current);
    current += step;
  }

  return list;
}

应用示例:生成一个2020到2022年的序列


let list = range(2020, 2022).map(val => {
    
    
  return {
    
    
    label: val + '',
    value: val + ''
  };
});

console.log(list);
// [
//   { label: '2020', value: '2020' },
//   { label: '2021', value: '2021' },
//   { label: '2022', value: '2022' }
// ]

使用函数工具库lodash提供的range方法

// demo.cjs
// node v10.16.0
// npm i lodash -S
import lodash from 'lodash';

// 注意:这里的 lodash 取值范围是[2020, 2023)
let list = lodash.range(2020, 2023).map(val => {
    
    
  return {
    
    
    label: val + '',
    value: val + ''
  };
});

console.log(list);
// [
//   { label: '2020', value: '2020' },
//   { label: '2021', value: '2021' },
//   { label: '2022', value: '2022' }
// ]

文档:https://www.lodashjs.com/docs/lodash.range

猜你喜欢

转载自blog.csdn.net/mouday/article/details/125535526