TypeScriptのリストからlist_aの欠損値を返す方法はありますか?
例えば:
var a1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
var a2 = ['a', 'b', 'c', 'd', 'z'];
結果の値は
['e', 'f', 'g'].
前もって感謝します
Array.prototype.filter() を使用するなど、おそらく多くの方法があります。
var a1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
var a2 = ['a', 'b', 'c', 'd'];
let missing = a1.filter(item => a2.indexOf(item) < 0);
console.log(missing); // ["e", "f", "g"]
( 遊び場のコード )
filter
関数はa1
の要素に対して実行され、a1
にある要素に(ただし、新しい配列で)削減します(要素を繰り返し処理しているため) a2
にありません。
a2
で欠落しているa1
の要素は、フィルター関数がa2
要素を反復処理しないため、結果配列(missing
)に含まれません。
var a1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
var a2 = ['a', 'b', 'c', 'd', 'z', 'hey', 'there'];
let missing = a1.filter(item => a2.indexOf(item) < 0);
console.log(missing); // still ["e", "f", "g"]
( 遊び場のコード )
TypeScriptは設計/コンパイル時のヘルプのみを提供し、JavaScript機能を追加しません。そのため、JavaScriptで機能するソリューションはTypeScriptでも機能します。
これを解決する方法はたくさんありますが、私のgotoの選択はlodashです: https://lodash.com/docs#difference
_.difference(['a', 'b', 'c', 'd', 'e', 'f', 'g'],['a', 'b', 'c', 'd']);