web-dev-qa-db-fra.com

Différence typographique entre deux tableaux

Existe-t-il un moyen de renvoyer les valeurs manquantes de list from list dans TypeScript?

Exemple de formulaire:

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

La valeur de résultat est

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

merci d'avance

17
Galma88

Il existe probablement de nombreuses façons, par exemple en utilisant 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"]

( code dans l'aire de jeux )


Modifier

La fonction filter parcourt les éléments de a1 et il le réduit (mais dans un nouveau tableau) aux éléments qui sont dans a1 (parce que nous itérons sur ses éléments) et manquent dans a2.

Éléments dans a2 qui manquent dans a1 ne sera pas inclus dans le tableau de résultats (missing) car la fonction de filtre n'itère pas sur a2 éléments:

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

( code dans l'aire de jeux )

39
Nitzan Tomer

TypeScript ne fournit qu'une aide à la conception/compilation, il n'ajoute pas de fonctionnalités JavaScript. Ainsi, la solution qui fonctionne en JavaScript fonctionnera en TypeScript.

De nombreuses façons de résoudre ce problème, mon choix serait le lodash: https://lodash.com/docs#difference

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