Maison > Questions et réponses > le corps du texte
var a = [1,2,3,4,5,6];
var b = [2,3,6];
Le tableau b est un sous-ensemble du tableau a, et enfin, supprimez les éléments contenant b de a. Quelles sont les meilleures options ?
巴扎黑2017-05-19 10:44:41
function diff(a1, a2) {
return a1.concat(a2).filter(function (val, index, arr) {
return arr.indexOf(val) === arr.lastIndexOf(val);
});
}
function diff2(a1, a2) {
return a1.filter(val => {
return a2.indexOf(val) === -1;
})
}
高洛峰2017-05-19 10:44:41
L'utilisation de la méthode filter
d'Array peut résoudre votre problème. La mise en œuvre spécifique est très simple, et d'autres y ont également répondu.
Si cela ne vous dérange pas de référencer des bibliothèques tierces, il est recommandé d'introduire lodash. Cette bibliothèque contient un grand nombre de méthodes de traitement des tableaux, si vous avez de nombreux scénarios d'opération de tableau, cela est fortement recommandé.
Il a une fonction spécifiquement pour résoudre ce problème, appelée différence. Bien sûr, un camarade de classe a déjà dit que vous pouvez également l'utiliser sans, mais ce n'est pas aussi pratique à utiliser que la différence.
Le "_" dans le code ci-dessous est un objet par défaut après l'introduction de lodash. Toutes les méthodes définies par lodash sont en dessous, un peu comme le "$" utilisé après l'introduction de jQuery
.var a = [1,2,3,4,5,6];
var b = [2,3,6];
var result = _.difference(a, b); // result=[1,4,5]
迷茫2017-05-19 10:44:41
Pourquoi utiliser la méthode loadash
,直接用数组的filter
:
var a = [1,2,3,4,5,6];
var b = [2,3,6];
var ans = a.filter((n) => !b.includes(n));
console.log(ans); //[1, 4, 5];