2017-12-05 4 views
1

私はフロントエンドとして角度を使用しています。私は以下の文字列を持っています。私は別の "(キー、値)オブジェクト"の一致するキーでこの "配列"をフィルタリングしたい。anglejs内の別の(キー、値)オブジェクトと文字列の配列で一致するアイテムをフィルタリングします

文字列配列:

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

(キー、値)オブジェクト:

var result = ["vijay-1110","ram-2110"] 

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

は、stringArrから所望の出力を唯一の非整合キーを戻すに

私は、以下のコードを試してみましたが、希望の出力?

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ですべての結果を返しますか?

答えて

0

以下のよう試し:作品以下のコード

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)

1

私は単にあなたがにinを使用することができます==

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

!=を交換し、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 => !(name in obj)); 
 
console.log(result);

0

およびOBJが空のオブジェクトである場合を管理します。 Object.keys(...)。長さは、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, {}));

かどうかを確認するためにここにあります
関連する問題