web-dev-qa-db-ja.com

2つの配列間のタイプスクリプトの違い

TypeScriptのリストからlist_aの欠損値を返す方法はありますか?

例えば:

var a1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
var a2 = ['a', 'b', 'c', 'd', 'z'];

結果の値は

['e', 'f', 'g'].

前もって感謝します

17
Galma88

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"]

遊び場のコード

39
Nitzan Tomer

TypeScriptは設計/コンパイル時のヘルプのみを提供し、JavaScript機能を追加しません。そのため、JavaScriptで機能するソリューションはTypeScriptでも機能します。

これを解決する方法はたくさんありますが、私のgotoの選択はlodashです: https://lodash.com/docs#difference

_.difference(['a', 'b', 'c', 'd', 'e', 'f', 'g'],['a', 'b', 'c', 'd']);
11
Ross Scott