关于字段的名称 自动赋值

需求:

  1. 用户只需输入中文名称(filedName),往数据库存放的时候, 需要再加一个英文字段(fieldID).
  2. fieldName 用户可以随便填, 但是 fieldID 是不给用户看的, 需要自动按顺序往下排, 例如 C001、C002.....C010.....C020....C999 。最大 999
  3. 第一次存放第一条为 C001, 再次获取并存放的时候, 是从获取到的数据最后一个 fieldID,开始继续往下排。

例如 , 获取到的是 C001、C002、C003,

再次添加 就是 从C004 开始 一直往下 。

==============================================
求问 利用js 代码如何实现.....

阅读 1.9k
2 个回答
/**
 * 
 * @param {array} digits 原始数组
 * @returns {string} 
 */
const plusOne = function(digits) {
  const start = digits.length - 1
  let plus = recursive(digits, start)
  return 'C' + plus.join('')
}
/**
 * 递归处理加一
 * @param {array} digits 递归处理的数组
 * @param {number} idx 数组下标
 * @returns {array} 处理完本轮加一逻辑数组 
 */
const recursive = function(digits, idx) {
  if (idx >= 0 && Number(digits[idx]) + 1 > 9) {
    digits[idx] = 0
    return recursive(digits, idx - 1)
  } else if (idx === -1) {
    digits.unshift(1)
  } else {
    digits[idx] = Number(digits[idx]) + 1
  }
  return digits
}

let fieldIdList = ['C001', 'C002', 'C003']
const lastValue = fieldIdList[fieldIdList.length - 1] // 获取最后一项 fieldId
const digitsList = lastValue.split('') // 将其转换为数组
digitsList.shift() // 去掉第一项的字母
console.log(plusOne(digitsList)) // C004

不太明白你所谓的“JS代码如何实现”是要表达什么?
从你的描述来看,逻辑已经很清晰,如果都能通过接口查询了,那前端就没有什么逻辑了,后端做处理;
假如你只是本地存储使用:

1、存入有序,每次取最后一个的id递增即可
2、存入无序,每次需遍历id取最大递增即可
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题