function isDuplicate(arr, propName){ let tempObj = {}; arr.forEach(item => { if (tempObj[item.propName]) { return true; } tempObj[item.propName] = true; }); return false; } let arr = [{names:1,aee:123},{names:1,aee:15456423},{names:2,aee:4658456}]; if(isDuplicate(arr, 'names')){ console.log('names属性存在重复'); }else{ console.log('names属性不存在重复'); } 代码优化
时间: 2024-03-27 11:37:36 浏览: 97
在上面的代码中,使用了 `arr.forEach` 方法来遍历数组,但是在判断重复时使用 `item.propName`,这样会导致判断的属性名永远为字符串 "propName",而不是实际传入的属性名。
正确的写法应该是使用 `item[propName]` 来获取属性值,这样才能动态地获取传入的属性名。
以下是修改后的代码:
```javascript
function isDuplicate(arr, propName){
let tempObj = {};
arr.forEach(item => {
if (tempObj[item[propName]]) {
return true;
}
tempObj[item[propName]] = true;
});
return false;
}
let arr = [{names:1,aee:123},{names:1,aee:15456423},{names:2,aee:4658456}];
if(isDuplicate(arr, 'names')){
console.log('names属性存在重复');
}else{
console.log('names属性不存在重复');
}
```
输出结果为:names属性存在重复
相关问题
let arr = [{names:1,aee:123},{names:1,aee:15456423},{names:2,aee:4658456}]; let tempObj = {}; let isDuplicate = false; for(let i=0; i<arr.length; i++){ if(tempObj[arr[i].names]){ isDuplicate = true; break; } tempObj[arr[i].names] = true; } if(isDuplicate){ console.log('names属性存在重复'); }else{ console.log('names属性不存在重复'); } 代码优化
可以将数组的遍历和判断是否重复的逻辑封装成一个函数,提高代码的可复用性和可维护性。
以下是示例代码:
```javascript
function isDuplicate(arr, propName){
let tempObj = {};
for(let i=0; i<arr.length; i++){
if(tempObj[arr[i][propName]]){
return true;
}
tempObj[arr[i][propName]] = true;
}
return false;
}
let arr = [{names:1,aee:123},{names:1,aee:15456423},{names:2,aee:4658456}];
if(isDuplicate(arr, 'names')){
console.log('names属性存在重复');
}else{
console.log('names属性不存在重复');
}
```
输出结果为:names属性存在重复
let arr = [{names:1,aee:123},{names:1,aee:15456423},{names:2,aee:4658456}]; 判断names是否有重复
可以使用数组和对象结合的方式来判断对象数组中的某个属性是否有重复,具体操作是遍历数组,把对象的某个属性值作为 key 放入一个临时对象中,如果该属性值已存在于临时对象中,则说明该属性有重复。
以下是示例代码:
```javascript
let arr = [{names:1,aee:123},{names:1,aee:15456423},{names:2,aee:4658456}];
let tempObj = {};
let isDuplicate = false;
for(let i=0; i<arr.length; i++){
if(tempObj[arr[i].names]){
isDuplicate = true;
break;
}
tempObj[arr[i].names] = true;
}
if(isDuplicate){
console.log('names属性存在重复');
}else{
console.log('names属性不存在重复');
}
```
输出结果为:names属性存在重复
阅读全文