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('')

運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM