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 21:37:36 浏览: 22
在上面的代码中,使用了 `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属性存在重复
相关问题
async function confirm() { isShow.value = false; // params.value.pageSize = 7 let i = menu.value.find((v) => v.isActive === true).id - 1; if (i === 0) { params.value.houseType = tagsList.value.find( (v) => v.isActive === true )?.value; } else if (i === 1) { params.value.orientation = tagsList.value.find( (v) => v.isActive === true )?.value; } else if (i === 2) { params.value.rentStr = tagsList.value.find( (v) => v.isActive === true )?.value; } else if (i === 3) { let arr = []; tagsList.value?.forEach((v) => { if (v.isActive === true) { arr.push(v.value * 1); } }); if (arr.length > 0) { params.value.houseLabels = arr.join(","); } } search(); }优化
可以将这段代码优化为:
```
isShow.value = false;
// params.value.pageSize = 7
const i = menu.value.findIndex(v => v.isActive) - 1;
if (i === 0) {
params.value.houseType = tagsList.value.find(v => v.isActive)?.value;
} else if (i === 1) {
params.value.orientation = tagsList.value.find(v => v.isActive)?.value;
} else if (i === 2) {
params.value.rentStr = tagsList.value.find(v => v.isActive)?.value;
} else if (i === 3) {
const arr = tagsList.value?.filter(v => v.isActive)?.map(v => v.value * 1);
if (arr?.length) {
params.value.houseLabels = arr.join(",");
}
}
search();
```
这样可以将代码变得更加简洁和易读,同时也可以避免使用可选链操作符时的一些潜在问题。
let arr = this.xiangmudata.filters((item)=>{item.value==this.xiangmuarr[0]})改错
这段代码有一个错误,应该使用`filter`而不是`filters`方法。另外,箭头函数中的判断条件应该使用双等号`==`而不是单等号`=`。以下是修改后的代码:
```javascript
let arr = this.xiangmudata.filter((item) => item.value == this.xiangmuarr[0]);
```
这样就可以正确过滤出`this.xiangmudata`中与`this.xiangmuarr[0]`相匹配的项。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)