js数组里面如果属性值一样就不push进去
时间: 2023-11-17 10:06:41 浏览: 223
可以使用 `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
function updateArrayObjects(arr, newObj) {
let isMatched = false;
for (let i = 0; i < arr.length; i++) {
if (arr[i].property === newObj.property) {
arr[i].value = newObj.value;
isMatched = true;
break;
}
}
if (!isMatched) {
arr.push(newObj);
}
return arr;
}
// 示例用法
const objArray = [
{ property: 'a', value: 1 },
{ property: 'b', value: 2 },
{ property: 'c', value: 3 }
];
const newObj1 = { property: 'b', value: 4 };
const newObj2 = { property: 'd', value: 5 };
console.log(updateArrayObjects(objArray, newObj1));
// 输出: [ { property: 'a', value: 1 }, { property: 'b', value: 4 }, { property: 'c', value: 3 } ]
console.log(updateArrayObjects(objArray, newObj2));
// 输出: [ { property: 'a', value: 1 }, { property: 'b', value: 4 }, { property: 'c', value: 3 }, { property: 'd', value: 5 } ]
```
在上面的示例中,`updateArrayObjects` 函数接收一个对象数组 `arr` 和一个新对象 `newObj`。它首先遍历数组,检查是否存在具有相同属性的对象。如果找到匹配的对象,则替换其属性值。如果没有找到匹配的对象,则将新对象添加到数组末尾。最后,返回更新后的数组。
请注意,这只是一个简单的示例实现,您可以根据需要进行修改和扩展。
阅读全文