Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据给定值筛选出对象数组,避免根据相同值添加重复项_Javascript_Object_Filter - Fatal编程技术网

Javascript 根据给定值筛选出对象数组,避免根据相同值添加重复项

Javascript 根据给定值筛选出对象数组,避免根据相同值添加重复项,javascript,object,filter,Javascript,Object,Filter,我正试图找出如何根据我要通过的一些条件从现有的对象中提取一个新的对象数组,如果元素已经存在,请不要复制新数组 这就是我的目标: 现在我想按给定的邮政编码过滤对象,例如: ` var PostCode = "TN37 7AJ " var newAddressesObj = addressesObj.filter( function (duties) { return duties.Address.Postcode === PostCode }); ` 这工作正常,它

我正试图找出如何根据我要通过的一些条件从现有的对象中提取一个新的对象数组,如果元素已经存在,请不要复制新数组

这就是我的目标:

现在我想按给定的邮政编码过滤对象,例如:

`
 var PostCode = "TN37 7AJ  "
 var newAddressesObj =  addressesObj.filter( function (duties) {
      return duties.Address.Postcode === PostCode
     });
`
这工作正常,它返回一个包含2个对象的数组:

现在,从这个新数组中,我想删除具有相同邮政编码的记录,这样它只会返回一个对象-我该怎么做

我曾尝试将$.inArray与过滤器一起使用,但我做错了什么,我也想一次完成这项工作-类似以下内容:

var PostCode=“TN37 7AJ”
var newAddressesObj=addressesObj.filter(函数(职责)){
return.Address.Postcode==Postcode&$.inArray(Postcode,addressesObj==-1
});

有什么想法吗


谢谢

将过滤后的邮政编码添加到数组中,并不断检查每个循环元素的邮政编码数组

var PostCode = "TN37 7AJ";
var addressesObj = [{
        "Address": {
            "Postcode": "TN38 8EW",
            "AddressLine1": "32 Head View"
        },
        "Name": "Ball, Jones",
        "ServiceDutyId": 0
    },
    {
        "Address": {
            "Postcode": "TN37 7AJ",
            "AddressLine1": "171 Road"
        },
        "Name": "Trump, Albert",
        "ServiceDutyId": 3259
    },
    {
        "Address": {
            "Postcode": "BN1 5AA",
            "AddressLine1": "171 Road"
        },
        "Name": "Martin, Lucas",
        "ServiceDutyId": 4256
    },
    {
        "Address": {
            "Postcode": "TN37 7AJ",
            "AddressLine1": "171 Road"
        },
        "Name": "Trump Albert",
        "ServiceDutyId": 3273
    }
]

var postcodeArr = [];

var isAbsence = function(postcode) {
    if (postcodeArr.indexOf(postcode) == -1) {
        postcodeArr.push(postcode);
        return true;
    }

    return false;
}

var newAddressesObj = addressesObj.filter(function(duties) {
    return duties.Address.Postcode === PostCode && isAbsence(duties.Address.Postcode);
});

使用而不是
过滤器
查找
在第一次匹配后停止。哦,我明白了。您想提取所有具有特定邮政编码的不同对象。我忘了在我的问题上提到一些东西…实际上,我想从该对象中提取2个元素,而不是一个。这是真正的实现:var StartPCode=“TN37 7AJ”,EndPCode=“TN38 8EW”var newAddressesObj=addressesObj.filter(函数(x){return(x.Address.StartPCode==StartPCode | | | x.Address.EndtPcode==EndPCode)和&$.inArray(PCode,addressesObj=-1});最后,我想要一个包含2个元素的对象,里面有不同的邮政编码,这样我就可以传递到谷歌地图并基本上显示路线……无论如何,感谢您的快速重播