i det här inlägget kommer vi att se hur man hittar skärningspunkten mellan två matriser i JavaScript. I ordningsord, lista ut de gemensamma värdena som finns i var och en av arraysna.
skärningspunkten mellan matriser och
är till exempel
.
Array.prototypstadiet.filter ()
tanken är att kontrollera närvaron av varje element i den första matrisen i den andra matrisen. This can be easily done using indexOf()
method with the filter()
method in following manner:
1
2
3
4
5
6
7
8
9
|
var first = ;
var second = ;
var common = first.filter(x => second.indexOf(x) !== -1)
console.log (”de vanliga elementen är:” + vanliga);
/*
utgång: de vanliga elementen är: 2,3
*/
|
för att kontrollera närvaron av vissa element i en array kan vi använd också den senaste metoden includes()
som returnerar ett booleskt värde. Detta illustreras nedan:
1
2
3
4
5
6
7
8
9
|
var first = ;
var second = ;
var common = first.filter(x => second.includes(x))
console.log(”The common elements are: ” + common);
/*
Output: The common elements are: 2,3
*/
|
Obs! Denna lösning resulterar inte i unika värden i utgången.
använda Set
en annan lösning är att konvertera arrayen till en ES6 Set
och kalla dess has()
metod för att kontrollera om det finns element i den andra arrayen.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
funktionskorsning(första, andra)
{
var s = ny uppsättning(andra);
returnera först.filter (item = > s. has(item));
};
var först = ;
var second=;
var common = korsning (första, andra);
konsol.log(”de vanliga elementen är:” + vanliga);
/*
utgång: de vanliga elementen är: 2,3
*/
|
för att undvika att skriva ut dubbletter i utgången kan du ta bort dubbletter från den första matrisen som visas nedan:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
funktionskorsning(första, andra)
{
första = ny uppsättning(första);
andra = ny uppsättning(andra);
retur .filter (item => andra.har(Artikel));
};
var första=;
var andra=;
var vanlig = korsning (första, andra);
konsol.log(”vanliga element är:” + vanliga);
/*
utgång: vanliga element är: 2,3
*/
|
understreck/Lodash
om du inte inte vill använda set som en mellanliggande datastruktur för att hitta gemensamma värden, kan koden förenklas med hjälp av understreck eller lodash bibliotek. The following code example prints the unique values that are present in given arrays using intersection() method.
1
2
3
4
5
6
7
8
9
10
11
|
var _ = require(’lodash’); // or underscore
var first = ;
var second = ;
var common = _.intersection(first, second);
konsol.log (”de vanliga elementen är:” + vanliga);
/*
utgång: de vanliga elementen är: 2,3
*/
|
jQuery
med jQuery, du kan använda koden nedan:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
const { jsdom } = Kräv(”jsdom”);
const { window } = new jsdom();
var $ = kräver(”jQuery”)(fönster);
var första=;
var andra=;
var secondNotFirst = $(andra).inte (första); / / – =
var common = $(andra).inte (secondNotFirst); / / – =
konsol.log (”de vanliga elementen är:”);
för (var i = 0; i < vanligt.längd; i++) {
konsol.logga(vanlig);
}
/*
utgång: de vanliga elementen är:
2
3
* /
|
koden kan förenklas med jQuery filter()
metod:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
const { jsdom } = Kräv(”jsdom”);
const { window } = New jsdom();
var $ = kräver(”jQuery”)(fönster);
var först = ;
var second=;
var common = $(andra).filter (första);
konsol.log (”de vanliga elementen är:”);
för (var i = 0; i < vanligt.längd; i++) {
konsol.logga(vanlig);
}
/ *
utgång: de vanliga elementen är:
2
3
* /
|