美文网首页javaScript
javascript -- 判断是否相同重复添加数据

javascript -- 判断是否相同重复添加数据

作者: 反者道之动001 | 来源:发表于2019-03-22 17:10 被阅读47次

    相同数据判断,看起来很简单的问题,但是也有一番故事,请听我慢慢道来。

    最开始,以为不就是判断是否重复而已

    ES6不是吃饭的,一行代码解决问题

    if(原数据.map(e => e.name).includes( 当前输入的值)){
                // 错误提示CODE
                return
    }
    

    添加一个数据,试下,好像没问题,但是编辑的时候好像校验不通过。于是编辑需要特殊处理。

    代码顺手就来

    var isSameVal = (_arr, val) => {
            let arr = JSON.parse(JSON.stringify(_arr))
            arr.push(val)
            let s = [...new Set(arr)]
            return (JSON.stringify(_arr) === JSON.stringify(s))
          }
    

    天真以为可以了,但是,发现,添加了一条数据,发现数据检验失败??

    一看,之前的数据是有重复,这个校验是校验全部的,这样会出问题的,会被测试提BUG的, 我们要宽容一点,对之前的错误不急于追究。

    那就只对一个数据修改

    于是代码改了一下

    
    var isSameNowVal = (_arr, val) => {
            let i = 0
            _arr.forEach((e, _index) => {
              if(e == val){
                i += 1
              }
            })
            return  i >= 1
          }
    

    然后测试一下, 咦,好像可以,但是问题,我编辑的时候,好像不通过?

    哦,原来编辑的时候,代码并不能知道这是添加还是编辑。

    于是来了一个新的思路,把每一次相同的位置记录下来并返回回去,然后再判断下当前的位置是不是再这个范围里面。

    于是改下代码

    var isSameNowVal = (_arr, val) => {
            let i = 0
            let indexs = []
            _arr.forEach((e, _index) => {
              if(e == val){
                i += 1
                indexs.push(_index)
              }
            })
            return {
              bool: i >= 1, 
              indexs
            }
    

    判断的时候

    if(same.bool){
              //不是修改同一个地方
              if(!same.indexs.includes(index)){
                // 提示
                return
              }
            }
    

    这样就可以了。

    --END--

    相关文章

      网友评论

        本文标题:javascript -- 判断是否相同重复添加数据

        本文链接:https://www.haomeiwen.com/subject/dfkrvqtx.html