2017-01-17 9 views
-1

以下の文字列の配列とオブジェクトの配列を比較し、別の配列で一致しない値を吐き出す方法は?文字列の他の配列との文字列の比較

アレイ:オブジェクトの

["2018", "2017", "2016", "2015", "2014"] 

アレイ:

[ {"fiscalYear": "2018"},{"fiscalYear": "2017"},{"fiscalYear": "2016"}] 

期待される結果が文字列["2015", "2014"]のいくつかの他の配列でなければなりません。

ありがとうございます!

答えて

3

最初の配列の値を2番目の配列の助けを借りてフィルタリングする必要があります。多分このような:あなたがに問題がある場合

var years = ["2018", "2017", "2016", "2015", "2014"]; 
 
var fiscalYears = [ {"fiscalYear": "2018"},{"fiscalYear": "2017"},{"fiscalYear": "2016"}]; 
 

 
var filtered = years.filter(function(year1) { 
 
    return !(fiscalYears.find(function(year2) { 
 
    return (year2.fiscalYear === year1); 
 
    })); 
 
}); 
 

 
console.log(filtered);

1

基本的dfsqの答え@が、矢印機能(ES6)を使用せずこれは、古典的な方法で基本を学ぶことができます。

var years = ["2018", "2017", "2016", "2015", "2014"]; 
 

 
objects = [ {"fiscalYear": "2018"},{"fiscalYear": "2017"},{"fiscalYear": "2016"}]; 
 

 
var yearsNotFound = []; 
 

 
for (var i = 0; i < years.length; i++) { 
 
    var found = false; 
 
    for (var j = 0; j < objects.length; j++) { 
 
     if (years[i] == objects[j].fiscalYear) { 
 
      found = true; 
 
      break; 
 
     } 
 
    } 
 
    
 
    if (!found) 
 
     yearsNotFound.push(years[i]); 
 
} 
 

 
console.log(yearsNotFound);

私はおそらく@dfsqから答えを好むだろうが、あなたが初心者であれば、私はそれがループの古き良きでそれを行う方法を見て傷つけるとは思いません。これを知ることで、将来、異なるデータ構造をどのようにトラバースするのかを理解するのに役立ちます。

1

const arr1 = ["2018", "2017", "2016", "2015", "2014"] 
 
const arr2 = [{"fiscalYear": "2018"},{"fiscalYear": "2017"},{"fiscalYear": "2016"}] 
 

 
const result = arr1.filter(val => !arr2.find(el => el.fiscalYear === val)) 
 

 
console.log(result)