js数组里面如果属性值一样就不push进去
时间: 2023-11-17 07:06:41 浏览: 215
可以使用 `Array.prototype.some()` 方法来判断数组中是否已经存在相同属性值的元素。如果存在,则不执行 push 操作。
以下是一个示例代码:
```javascript
const array = []; // 原始数组
const newObj = { property: 'value' }; // 新元素
const isDuplicate = array.some(obj => obj.property === newObj.property);
if (!isDuplicate) {
array.push(newObj);
}
```
在上面的代码中,我们使用 `some()` 方法来遍历原始数组 `array`。通过比较新元素的属性值和数组中已有元素的属性值,判断是否存在相同的值。如果没有找到相同的值,则将新元素 `newObj` 添加到数组中。
这样,只有当属性值不重复时,新元素才会被 push 进数组。
相关问题
js数组里面的对象根据属性值去重
你可以使用`reduce()`方法和`Map`数据结构来根据属性值去重数组中的对象。具体实现可以参考以下代码:
```javascript
const arr = [
{ id: 1, name: 'John' },
{ id: 2, name: 'Mary' },
{ id: 1, name: 'Bob' },
{ id: 3, name: 'Alice' },
{ id: 2, name: 'David' }
];
const uniqueArr = arr.reduce((acc, current) => {
const existing = acc.get(current.id);
if (!existing) {
acc.set(current.id, current);
} else if (Array.isArray(existing)) {
existing.push(current)
} else if (existing.id === current.id) {
acc.set(current.id, [existing, current]);
}
return acc;
}, new Map()).values();
console.log([...uniqueArr]); // [{id: 1, name: 'John'}, {id: 2, name: 'Mary'}, {id: 3, name: 'Alice'}]
```
这段代码会根据数组中每个对象的 `id` 属性值来去重,并且保留第一次出现的对象。如果有多个对象具有相同的 `id` 属性值,则会把它们放在一个数组中。
对象数组中有相同属性就替换属性值,没有就push当前属性
好的,我明白了。您的问题是如何在对象数组中进行属性值的替换或添加操作。下面是一个示例代码,用于实现您的需求:
```javascript
// 对象数组
const arr = [
{ id: 1, value: 'A' },
{ id: 2, value: 'B' },
{ id: 3, value: 'C' }
];
// 要替换或添加的属性
const newProp = { id: 2, value: 'D' };
// 查找对象数组中是否存在相同属性的对象
const existingObj = arr.find(obj => obj.id === newProp.id);
if (existingObj) {
// 如果存在相同属性的对象,则替换属性值
existingObj.value = newProp.value;
} else {
// 如果不存在相同属性的对象,则将新对象添加到数组
arr.push(newProp);
}
console.log(arr);
```
这段代码会输出以下结果:
```
[
{ id: 1, value: 'A' },
{ id: 2, value: 'D' },
{ id: 3, value: 'C' }
]
```
如果对象数组中存在与新对象具有相同 `id` 属性的对象,它的 `value` 属性将被替换为新对象的 `value` 值。如果不存在相同属性的对象,则将新对象添加到数组中。
阅读全文