在JavaScript中仅添加唯一对象到数组

假设我从这开始:
var shippingAddresses =      [{
                                "firstname": "Kevin","lastname": "Borders","address1": "2201 N Pershing Dr","address2": "Apt 417","city": "Arlington","state": "VA","zip": "22201","country": "US"
                            },{
                                "firstname": "Dan","lastname": "Hess","address1": "304 Riversedge Dr","address2": "","city": "Saline","state": "MI","zip": "48176","country": "US"
                            }];

我用这个来填写一个表单.用户可以编辑条目或添加新条目.我需要防止他们添加重复.

问题是我正在序列化的表单的结构以及这些值从数据库中返回的顺序是不一样的,所以有机会将一个项目插入到这个数组中,格式如下:

{
                                "country": "US","firstname": "Kevin","state": "VA"
                            }

哪个与第一个条目相同,只是以不同的顺序排列.

我正在加载underscorejs,所以如果有办法处理它与该库将是伟大的.我也使用jQuery,如果这有帮助.

在这一点上,我不知道如何进行.任何帮助将不胜感激.

解决方法

Underscore findWhere function完全符合您所需要的 – 它不是按对象标识搜索的索引,而是搜索属性与输入值相同的对象.
if (_.findWhere(shippingAddresses,toBeInserted) == null) {
    shippingAddresses.push(toBeInserted);
}

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...