zoukankan      html  css  js  c++  java
  • js对象数组新增、修改时的验证是否重复的逻辑

    JS代码:

    // 定义数据集合
    const persons = [
      { id: 1, name: '张三' },
      { id: 2, name: '李四' }
    ]
    console.log('')
    console.log('初始化数据为:', JSON.stringify(persons))
    console.log('')
    
    // --------- 设定场景1 -> 新增时存在相同姓名 ---------
    console.log('-------------------场景1-------------------')
    // 新增状态id为-1,验证后重新在前端生成一个id,或者由后台生成
    let person1 = { id: -1, name: '张三' }
    // 验证
    let verifyObj1 = persons.find(item => item.name === person1.name &&
      item.id !== person1.id)
    // 如果找到相同对象,则不允许添加
    if (verifyObj1) {
      console.log('存在相同姓名,新增失败')
      console.log('场景1结果:', JSON.stringify(persons))
    } else {
      // 通过验证,允许新增
      persons.push(person1)
      console.log('场景1结果:', JSON.stringify(persons))
    }
    console.log('-------------------场景1-------------------')
    console.log('')
    
    // --------- 设定场景2 -> 新增时不存在相同姓名 ---------
    console.log('-------------------场景2-------------------')
    // 新增状态id为-1,验证后重新在前端生成一个id,或者由后台生成
    person1 = { id: -1, name: '马六' }
    // 验证
    verifyObj1 = persons.find(item => item.name === person1.name &&
      item.id !== person1.id)
    // 如果找到相同对象,则不允许添加
    if (verifyObj1) {
      console.log('存在相同姓名,新增失败')
      console.log('场景2结果:', JSON.stringify(persons))
    } else {
      person1.id = persons.length + 1 // ID自增
      // 通过验证,允许新增
      persons.push(person1)
      console.log('场景2结果:', JSON.stringify(persons))
    }
    console.log('-------------------场景2-------------------')
    console.log('')
    
    // --------- 设定场景3 -> 编辑时存在相同姓名 ---------
    console.log('-------------------场景3-------------------')
    // 编辑状态id为实际的编辑对象id
    let personIndex = 0 // 假设编辑张三
    let person2 = persons[personIndex]
    person2.name = '李四'
    // 验证
    let verifyObj2 = persons.find(item => item.name === person2.name &&
      item.id !== person2.id)
    // 如果找到相同对象,则不允许修改
    if (verifyObj2) {
      console.log('存在相同姓名,修改失败')
      console.log('场景3结果:', JSON.stringify(persons))
    } else {
      // 通过验证,允许修改
      persons[personIndex] = person2
      console.log('场景3结果:', JSON.stringify(persons))
    }
    console.log('-------------------场景3-------------------')
    console.log('')
    
    // --------- 设定场景4 -> 编辑时不存在相同姓名 ---------
    console.log('-------------------场景4-------------------')
    // 编辑状态id为实际的编辑对象id
    personIndex = 0 // 假设编辑张三
    person2 = persons[personIndex]
    person2.name = '王五'
    // 验证
    verifyObj2 = persons.find(item => item.name === person2.name &&
      item.id !== person2.id)
    // 如果找到相同对象,则不允许修改
    if (verifyObj2) {
      console.log('存在相同姓名,修改失败')
      console.log('场景4结果:', JSON.stringify(persons))
    } else {
      // 通过验证,允许修改
      persons[personIndex] = person2
      console.log('场景4结果:', JSON.stringify(persons))
    }
    console.log('-------------------场景4-------------------')
    console.log('')

    运行结果:

  • 相关阅读:
    [LeetCode]230. 二叉搜索树中第K小的元素(BST)(中序遍历)、530. 二叉搜索树的最小绝对差(BST)(中序遍历)
    【二叉树-所有路经系列(根->叶子)】二叉树的所有路径、路径总和 II、路径总和、求根到叶子节点数字之和(DFS)
    [LeetCode]1083. 销售分析 II(Mysql,having+if)
    [LeetCode]196. 删除重复的电子邮箱(delete)
    [LeetCode]面试题62. 圆圈中最后剩下的数字(数学)
    [算法]十进制整数转八进制
    [LeetCode]534. 游戏玩法分析 III(Mysql)
    [LeetCode]Mysql小本本
    [LeetCode]Mysql系列5
    Java 冒泡排序的实现
  • 原文地址:https://www.cnblogs.com/jardeng/p/13471377.html
Copyright © 2011-2022 走看看