Javascript 使用angularjs中的另一个(键、值)对象筛选字符串数组中的匹配项

Javascript 使用angularjs中的另一个(键、值)对象筛选字符串数组中的匹配项,javascript,arrays,angularjs,json,foreach,Javascript,Arrays,Angularjs,Json,Foreach,我使用angular作为前端。我有下面的字符串数组。我想用另一个(键,值)对象的匹配键过滤这个“数组” 字符串数组: var stringArr=[“vijay-1110”、“viki-1100”、“ram-2110”、“mark-2100”] (键、值)对象: 要仅从stringArr返回不匹配的键,因此需要输出: var result = ["vijay-1110","ram-2110"] 我已经尝试了下面的代码,它没有返回所需的输出 var filterFunction = functi

我使用angular作为前端。我有下面的字符串数组。我想用另一个(键,值)对象的匹配键过滤这个“数组”

字符串数组:

var stringArr=[“vijay-1110”、“viki-1100”、“ram-2110”、“mark-2100”]

(键、值)对象:

要仅从
stringArr
返回不匹配的键,因此需要输出:

var result = ["vijay-1110","ram-2110"]
我已经尝试了下面的代码,它没有返回所需的输出

var filterFunction = function(stringArr,obj){
if(angular.equals({}, obj)){
    return stringArr;
}
else{
    _.each(stringArr,function(input,index){
        Object.keys(obj).forEach(function(key) {
            if(input === key){
                stringArr.splice[index,1];
            }
        });
    });
    return stringArr;
}
这不会过滤
stringArr
,它总是返回
stringArr

中的所有结果

stringArr.filter( s => typeof obj[s] != "undefined" ) 
编辑

我意识到OP在寻找与我的答案相反的答案,所以简单地替换了
=
==

stringArr.filter( s => typeof obj[s] == "undefined" ) 

您可以使用
中的
检查对象中是否存在键。使用
array#filter
遍历数组,并为每个值返回不存在的值

var stringArr=[“vijay-1110”、“viki-1100”、“ram-2110”、“mark-2100”];
var obj={“viki-1100”:6,“mark-2100”:2};
var result=stringArr.filter(name=>!(对象中的名称));
控制台日志(结果)请尝试以下方法:

var stringArr=[“vijay-1110”、“viki-1100”、“ram-2110”、“mark-2100”]
变量obj={“viki-1100”:6,“mark-2100”:2}
变量结果=stringArr.filter(函数(项){
返回!(obj中的项目)
});

console.log(result)
下面的代码用于管理obj为空对象的情况。key(…).length用于检查obj是否为空对象

var stringArr=[“vijay-1110”、“viki-1100”、“ram-2110”、“mark-2100”];
var obj={“viki-1100”:6,“mark-2100”:2};
var filterFunction=函数(stringArr,obj){
返回stringArr.filter(str=>Object.keys(obj).length==0 | | obj[str]);
}
日志(filterFunction(stringArr,obj));
log(filterFunction(stringArr,{}))
stringArr.filter( s => typeof obj[s] == "undefined" )