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('')
運行結果: