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('')
运行结果:

js对象数组新增、修改时的验证是否重复的逻辑的更多相关文章
- JS对象—数组总结(创建、属性、方法)
JS对象—数组总结(创建.属性.方法) 1.创建字符串 1.1 new Array() var arr1 = new Array(); var arr2 = new Array(6); 数组的长度为6 ...
- js对象数组多字段排序
来源:js对象数组按照多个字段进行排序 一.数组排序 Array.sort()方法可以传入一个函数作为参数,然后依据该函数的逻辑,进行数组的排序. 一般用法:(数组元素从小大进行排序) var a = ...
- 前台的js对象数组传到后台处理。在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>
前台的js对象数组传到后台处理.在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>
- js对象数组中的某属性值 拼接成字符串
js对象数组中的某属性值 拼接成字符串 var objs=[ {id:1,name:'张三'}, {id:2,name:'李四'}, {id:3,name:'王五'}, {id:4,name:'赵六' ...
- vue中,对象数组多层嵌套时,更新数据更新页面
vue中的对象和数组的元素直接赋值修改时,是不能响应到view中去的 1.对象更新 this.a={title:'列表1’}; this.a.title='列表2’; <h1>{{a.ti ...
- js对象,数组,字符串的操作
循环绑定=>变量污染 for (var i = 0;i<lis.length;i++){ lis[i].index = i;#给页面元素对象添加一个任意属性(保留索引的属性index) # ...
- JS 对象 数组求并集,交集和差集
一.JS数组求并集,交集和差集 需求场景 最近,自己项目中有一些数组操作,涉及到一些数学集的运算,趁着完成后总结一下. 简化问题之后,现有两数组a = [1, 2, 3],b = [2, 4, 5], ...
- js对象/数组深度复制
今天碰到个问题,js对象.数组深度复制:之前有见过类似的,不过没有实现函数复制,今晚想了一下,实现代码如下: function clone(obj) { var a; if(obj instanceo ...
- js对象数组深度去重和深度排序
使用collect.js处理数组和对象 https://github.com/ecrmnn/collect.js/# 引入collect.js https://github.com/ecrmnn/co ...
随机推荐
- pandas_时间序列和常用操作
# 时间序列和常用操作 import pandas as pd # 每隔五天--5D pd.date_range(start = '',end = '',freq = '5D') ''' Dateti ...
- 1-Numpy的通用函数(ufunc)
一.numpy“通用函数”(ufunc)包括以下几种: 元素级函数(一元函数):对数组中的每个元素进行运算 数组级函数:统计函数,像聚合函数(例如:求和.求平均) 矩阵运算 随机生成函数 常用一元通用 ...
- Python File writelines() 方法
概述 writelines() 方法用于向文件中写入一序列的字符串.高佣联盟 www.cgewang.com 这一序列字符串可以是由迭代对象产生的,如一个字符串列表. 换行需要制定换行符 \n. 语法 ...
- PDO::__construct
PDO::__construct — 创建一个表示数据库连接的 PDO 实例(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 PDO::__constru ...
- Typora+PicGo-Core(command line)+SMMS、github、gitee实现Typora图片上传到图床
Typora+PicGo-Core(command line)+SMMS.github.gitee实现Typora图片上传到图床 1 安装插件2 配置config.json 2.1 设置SMMS ...
- 利用Python操作MySQL数据库
前言 在工作中,我们需要经常对数据库进行操作,比如 Oracle.MySQL.SQL Sever 等,今天我们就学习如何利用Python来操作 MySQL 数据库. 本人环境:Python 3.7.0 ...
- JSON 和 POJO 互转,List<T> 和 JSON 互转
JSON 和 POJO import com.alibaba.fastjson.JSONObject; import org.slf4j.Logger; import org.slf4j.Logger ...
- 实验05——java算术运算符减法
package cn.tedu.demo; import java.math.BigDecimal; /** * @author 赵瑞鑫 E-mail:1922250303@qq.com * @ver ...
- 在图像中隐藏数据:用 Python 来实现图像隐写术
什么是“隐写术”? 隐写术是将机密信息隐藏在更大的信息中,使别人无法知道隐藏信息的存在以及隐藏信息内容的过程.隐写术的目的是保证双方之间的机密交流.与隐藏机密信息内容的密码学不同,隐写术隐瞒了传达消息 ...
- Python基础教程,流程控制语句详解
1.程序结构 计算机在解决问题时,分别是顺序执行所有语句.选择执行部分语句.循环执行部分语句,分别是:顺序结构.选择结构.循环结构.如下图: 很多人学习python,不知道从何学起.很多人学习pyth ...