Easy way to prevent add object with the same value to array
问题的出现原因是:在给数组添加对象时,没有进行重复值的验证,导致可能会出现重复值的情况。
解决方法是:通过给 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'}]
,可以看到重复的用户对象并没有被添加到数组中。