Javascript 基于两个属性从数组中删除对象

Javascript 基于两个属性从数组中删除对象,javascript,arrays,ecmascript-5,Javascript,Arrays,Ecmascript 5,我有一个数组,其中包含如下所示的自定义对象: { field: fieldName, dataType: usuallyAString, title: titleForLocalization, environmentLabel: environmentName } 对象上还有一些其他属性,但我真正关心的只有字段和环境标签。我需要过滤掉所有具有相同字段和环境标签但不关心任何其他属性的对象。数组可以有共享字段或环境标签的对象,但不能同时共享这两个对象 理想情况下,

我有一个数组,其中包含如下所示的自定义对象:

{
    field: fieldName,
    dataType: usuallyAString,
    title: titleForLocalization,
    environmentLabel: environmentName
}
对象上还有一些其他属性,但我真正关心的只有
字段
环境标签
。我需要过滤掉所有具有相同
字段
环境标签
但不关心任何其他属性的对象。数组可以有共享
字段
环境标签
的对象,但不能同时共享这两个对象


理想情况下,我希望使用
Array.filter
,但还没有根据两个属性找出如何使用它。此外,我仅限于es5

创建另一个包含要测试的所有属性组合的对象。使用
filter()
并测试对象中是否已经存在该对。如果不是,则将属性添加到另一个对象并返回
true

var seen = {};
newArray = array.filter(function(obj) {
    if (seen[obj.field]) {
        if (seen[obj.field].includes(obj.environmentLabel) {
            return false;
        } else {
            seen[obj.field].push(obj.environmentLabel);
        }
    } else {
        seen[obj.field] = [obj.environmentLabel];
    }
    return true;
});

创建另一个包含要测试的所有属性组合的对象。使用
filter()
并测试对象中是否已经存在该对。如果不是,则将属性添加到另一个对象并返回
true

var seen = {};
newArray = array.filter(function(obj) {
    if (seen[obj.field]) {
        if (seen[obj.field].includes(obj.environmentLabel) {
            return false;
        } else {
            seen[obj.field].push(obj.environmentLabel);
        }
    } else {
        seen[obj.field] = [obj.environmentLabel];
    }
    return true;
});
const数据=[{
字段:1,
数据类型:“通常为字符串”,
标题:“标题本地化”,
环境标签:1
},
{
字段:1,
数据类型:“通常为字符串”,
标题:“标题本地化”,
环境标签:1
},
{
字段:2,
数据类型:“通常为字符串”,
标题:“标题本地化”,
环境标签:2
}]
var结果=uqwith(数据,函数(arrVal,othVal){
返回arrVal.field==othVal.field&&arrVal.environmentLabel==othVal.environmentLabel;
});
console.log(结果)
const数据=[{
字段:1,
数据类型:“通常为字符串”,
标题:“标题本地化”,
环境标签:1
},
{
字段:1,
数据类型:“通常为字符串”,
标题:“标题本地化”,
环境标签:1
},
{
字段:2,
数据类型:“通常为字符串”,
标题:“标题本地化”,
环境标签:2
}]
var结果=uqwith(数据,函数(arrVal,othVal){
返回arrVal.field==othVal.field&&arrVal.environmentLabel==othVal.environmentLabel;
});
console.log(结果)

就像一个符咒!我将注意到,嵌套的
if
上缺少一个右括号。我不能提交一个少于6个字符的编辑,但是,lolWorks就像一个符咒!我将注意到,嵌套的
if
上缺少一个右括号。我不能提交少于6个字符的编辑,lolI应该在原始问题中使用它,但我不能使用lodash或在代码中添加任何新的依赖项。我应该在原始问题中使用它,但我不能使用lodash或在代码中添加任何新的依赖项。