js数组里面如果属性值一样就不push进去
时间: 2023-11-17 12:06:41 浏览: 34
可以使用 `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` 属性值,则会把它们放在一个数组中。
javascript在数组里面找不同的属性值组成数组
可以使用Array.prototype.reduce()方法和Array.prototype.includes()方法来实现。
假设有如下数组:
```javascript
const arr = [
{ id: 1, name: 'Tom' },
{ id: 2, name: 'Jerry' },
{ id: 3, name: 'Alice' },
{ id: 4, name: 'Bob' },
{ id: 5, name: 'Tom' }
];
```
我们要找出数组中不同的name属性值,可以使用以下代码:
```javascript
const result = arr.reduce((acc, cur) => {
if (!acc.includes(cur.name)) {
acc.push(cur.name);
}
return acc;
}, []);
console.log(result); // ["Tom", "Jerry", "Alice", "Bob"]
```
在reduce()方法中,acc代表累加器,初始值为一个空数组。cur代表当前遍历到的元素。如果当前元素的name属性值不在累加器数组中,则将其添加到累加器数组中。最后返回累加器数组即可。