Easy way to prevent add object with the same value to array

18 浏览
0 Comments

Easy way to prevent add object with the same value to array

如标题所示,防止向数组中添加具有相同值的对象的简单方法。

const array = [
  {
    name:'John'
  },
  {
    name: 'Mark'
  }
]
array.push({name: 'John'}) //不添加
array.push({name: 'Kevin'}) //添加
console.log(array)

0
0 Comments

问题的出现原因是:在给数组添加对象时,没有进行重复值的验证,导致可能会出现重复值的情况。

解决方法是:通过给 Array.prototype 添加一个名为 addUser 的方法,在该方法中验证新的用户对象是否与数组中已有的用户对象重复。如果不重复,则将新用户对象添加到数组中。最后返回数组。

代码如下:

const array = [{name: 'John'},{name: 'Mark'}];
Array.prototype.addUser = function(user) {
  if (!this.some(u => u.name === user.name)) {
    this.push(user);
  }
  return this;
};
array.addUser({name: 'John'});  // 不添加
array.addUser({name: 'Kevin'}); // 添加
console.log(array);

以上代码通过在 Array.prototype 上添加 addUser 方法,使用 some 方法对数组中的每个对象进行遍历,判断新的用户对象的名字是否与已有的用户对象的名字重复。如果没有重复,则使用 push 方法将新的用户对象添加到数组中。最后返回数组。

运行以上代码输出的结果为: [{name: 'John'}, {name: 'Mark'}, {name: 'Kevin'}],可以看到重复的用户对象并没有被添加到数组中。

0