【问题标题】:Filter matched items in an array of string with another (key,value) objects in angularjs使用angularjs中的另一个(键,值)对象过滤字符串数组中的匹配项
【发布时间】:2026-02-07 12:15:02
【问题描述】:

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

字符串数组:

var stringArr = ["vijay-1110","viki-1100","ram-2110","mark-2100"]

(键,值)对象:

var obj = {"viki-1100":6,"mark-2100":2}

只返回来自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中的所有结果?

【问题讨论】:

    标签: javascript arrays angularjs json foreach


    【解决方案1】:

    试试

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

    编辑

    我意识到 OP 正在寻找与我的答案相反的答案,因此只需将 != 替换为 ==

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

    【讨论】:

      【解决方案2】:

      试试下面的方法:

      var stringArr = ["vijay-1110","viki-1100","ram-2110","mark-2100"]
      var obj = {"viki-1100":6,"mark-2100":2}
      
      var result = stringArr.filter(function(item){
        return !(item in obj)
      });
      console.log(result)

      【讨论】:

        【解决方案3】:

        您可以使用in 检查对象中是否存在键。使用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 => !(name in obj));
        console.log(result);

        【讨论】:

          【解决方案4】:

          下面的代码工作并管理 obj 是空对象的情况。 Object.keys(...).length 在这里检查 obj 是否为空对象

          var stringArr = ["vijay-1110","viki-1100","ram-2110","mark-2100"];
          var obj = {"viki-1100":6,"mark-2100":2};
          var filterFunction = function(stringArr,obj){
              return stringArr.filter(str => Object.keys(obj).length === 0 || obj[str] );
          }
          
          console.log(filterFunction(stringArr, obj));
          console.log(filterFunction(stringArr, {}));

          【讨论】:

            最近更新 更多