Σειρά σε αυτόν τον οδηγό έχουν οι βασικές πράξεις μεταξύ συνόλων της linq.js.

linqjs

All

Μέσω της συγκεκριμένη εντολής μπορούμε να ελέγξουμε αν όλα τα στοιχεία ενός συνόλου πληρούν κάποιο συγκεκριμένο κριτήριο. Λειτουργούν και οι δυο τύποι ελέγχου συνθήκης της linq.js όπως οι αλφαριθμητικές εντολές αλλά και οι functions. Ωστόσο στην περίπτωση που χρησιμοποιηθεί function τότε την πρώτη φορά που στο πέρασμα του συνόλου επιστραφεί false τιμή η εντολή All θα τερματίσει και θα επιστρέψει αποτέλεσμα false, διαφορετικά συνεχίζει έως το τέλος του συνόλου και επιστρέφει true ως αποτέλεσμα.

Αρχείο: all.js

var arr = [1,2,3,4,5];
Enumerable.From(arr).All("$<5");
Enumerable.From(arr).All("$<10");

Enumerable.From(arr).All(function(value){
 return value < 15;
});

Αποτέλεσμα:

image

Any

Με την Any μπορούμε να ελέγξουμε αν μέσα από όλα τα στοιχεία ενός συνόλου ένα από αυτά πληροί κάποιο συγκεκριμένο κριτήριο ελέγχου. Παρομοίως με την All λειτουργούν και οι δυο τύποι παραμέτρων για την συνθήκη ελέγχου, ωστόσο σε αντίθεση με την All η Any σταματά στην πρώτη επιστροφή αποτελέσματος true, και επιστρέφει true αν ικανοποιηθεί η συνθήκη έστω μια φορά. Αν η εντολή περάσει από όλο το σύνολο χωρίς επιστροφή τιμής true έστω και μια φορά τότε επιστρέφεται το αποτέλεσμα false.

Αρχείο: any.js

var arr = [30,50,42,5];
Enumerable.From(arr).Any("$==5");
Enumerable.From(arr).Any("$==10");

Enumerable.From(arr).Any(function(value){
    return value == 3;
});

Αποτέλεσμα:

image

Concat

Η Concat είναι μια απλή εντολή μέσω της οποίας μπορούμε να ενώσουμε δυο πίνακες σε έναν. Η ένωση γίνεται όπου ο πίνακας της παράμετρος της Concat τοποθετείται στο τέλος του πίνακα παράμετρο της FromRange ή οτιδήποτε άλλο μας παραθέτει πίνακα Enumerable).

Αρχείο: concat.js

var arr1 = [1,2,3,4,5];
var arr2 = [6,7,8,9,10];

Enumerable.From(arr1).Concat(arr2).ToArray();

Αποτέλεσμα:

image

Insert

Παρόμοια με την Concat γίνεται ένωση δύο πινάκων μόνο που στην συγκεκριμένη περίπτωση μπορούμε να διαλέξουμε σε ποιο σημείο του πίνακα-παράμετρο του From θα προστεθεί ο πίνακας-παράμετρος του Insert.

Αρχείο: insert.js

var arr1 = [1,2,3,4,5];
var arr2 = [6,7,8,9,10];

Enumerable.From(arr1).Insert(3,arr2).ToArray();

Αποτέλεσμα:

image

Alternate

Η συγκεκριμένη εντολή προσθέτει μια τιμή σε ένα σύνολο δεδομένων συνεχώς εναλλασσόμενη με της τιμές του συνόλου. Έτσι αν έχουμε ένα σύνολο [1,2,3,4] και τοποθετήσουμε ως παράμετρο στο Alternate true τότε το νέο μας σύνολο που θα προκύψει θα είναι [1,true,2,true,3,true,4,true].

Αρχείο: alternate.js

var arr = [1,2,3,4,5];
Enumerable.From(arr).Alternate([10,10]).ToArray();

Αποτέλεσμα:

image

Contains

Η Contains λειτουργεί παρόμοια με την Any, η διαφορά τους βρίσκεται στο ότι το Contains μπορεί να συμπεριλάβει μια επιπλέον παράμετρο έτσι ώστε να γίνει έλεγχος σε συγκεκριμένο property αν πρόκειται για σύνολο αντικειμένων.

Αρχείο: contains.js

var arr = [1,2,3,4,5];
Enumerable.From(arr).Contains(3);
Enumerable.From(arr).Contains(30);

var arr1 = [{name:"Δημήτριος",age:50},{name:"Κωνσταντίνος",age:15}];
Enumerable.From(arr1).Contains(15,"$.age");

Αποτέλεσμα:

image

DefaultEmpty

Έλεγχος για το αν υπάρχουν δεδομένα σε ένα σύνολο, κι αν δεν υπάρχουν επιστρέφεται η τιμή default που δίνεται ως παράμετρος στο DefaultEmpty.

Αρχείο: DefaultEmpty.js

var arr = [1,2,3,4,5];
Enumerable.From(arr).DefaultIfEmpty("default").ToArray();
Enumerable.From([]).DefaultIfEmpty("default").ToArray();

Αποτέλεσμα:

image

SequenceEqual

Με την συγκεκριμένη εντολή ελέγχεται αν δυο σύνολα είναι ακριβώς πανόμοια. Ο έλεγχος συμπεριλαμβάνει και την λεπτομέρεια της τοποθεσίας του κάθε στοιχειού, αυτό σημαίνει πως ακόμη κι αν έχουμε δυο σύνολα με τα ίδια στοιχεία αλλά σε διαφορετική σειρά το καθένα τότε δεν είναι ίσα.

Αρχείο: defaultEmpty.js

var arr1 = [1,2,3,4,5];
var arr2 = [2,3,1,4,5];
Enumerable.From(arr1).SequenceEqual(arr2);

var arr3 = [1,2,3,4,5];
Enumerable.From(arr1).SequenceEqual(arr3);

Αποτέλεσμα:

image

Distinct

Λειτουργία μέσω της οποία μπορούμε μέσα από ένα σύνολο δεδομένων να επιλέξουμε όλες τις διακριτές τιμές του. Αν μέσα σε ένα σύνολο υπάρχουν πολλές επαναλαμβανόμενες τιμές τότε θα επιστραφεί ένα σύνολο το οποίο δεν θα περιλαμβάνει επαναλαμβανόμενες τιμές. Παρακάτω παραδίδονται δυο παραδείγματα, ένα με σκέτη χρήση πίνακα αριθμητικών στοιχείων, και ένα με χρήση πίνακα αντικειμένων (έτσι ώστε να δούμε πως γίνεται η επιλογή και με βάση αντίστοιχα properties).

Αρχείο: distinct.js

var arr1 = [1,1,1,2,3,3,2,2,3,3,1,1,3,3,3,1];
Enumerable.From(arr1).Distinct().ToArray();
Enumerable.From(arr1).Distinct(function(value,val){
    return value;
}).ToArray();

var arr2 = [
    {name: "Δημήτριος", age:25}, 
    {name:"Δημήτριος", age:55}, 
    {name:"Κωνσταντίνος", age: 25}];

Enumerable.From(arr2).Distinct("$.name").ToArray();
Enumerable.From(arr2).Distinct(function(value){
    return value.age;
}).ToArray();

Αποτέλεσμα:

image

Όπως παρατηρούμε από το παραπάνω παράδειγμα ή επιλογή στοιχείων από πίνακα αντικειμένων γίνεται μεμονωμένα επιλέγοντας ως κριτήριο ένα μοναδικό χαρακτηριστικό μέσα από το σύνολο των αντικειμένων αυτών.

Except

Μέσω της εντολής Except γίνεται η πράξη της αφαίρεσης όπως γνωρίζουμε στις πράξεις συνόλων από τα Μαθηματικά.

excepta_thumb

Όπως βλέπουμε στην παραπάνω εικόνα κάνοντας αφαίρεση του συνόλου Α από το σύνολο Β, τόσο τα ξεχωριστά στοιχεία του Α από το Β όσο και τα κοινά στοιχεία των δυο συνόλων θα αφαιρεθούν από το καινούργιο σύνολο, έτσι η κόκκινη περιοχή των δυο συνόλων είναι αυτή που θα επιστραφεί ως αποτέλεσμα.

Αρχείο: exceptA.js

var A = [1,2,3,4,5];
var B = [5,4,3,9,8];

Enumerable.From(B).Except(A).ToArray
Enumerable.From(B).Except(A,function(value){ 
    return value;
}).ToArray();

Αποτέλεσμα:

image

exceptb_thumb[1]

Αντίστοιχα αν αφαιρέσουμε την περιοχή Β από την περιοχή Α τότε τόσο τα κοινά στοιχεία και των δυο αλλά και τα μεμονωμένα του Β θα αφαιρεθούν και έτσι θα επιστραφούν τα μοναδικά στοιχεία του συνόλου Ά (κόκκινη περιοχή).

Αρχείο: exceptB.js

var A = [1,2,3,4,5];
var B = [5,4,3,9,8];

Enumerable.From(A).Except(B).ToArray();
Enumerable.From(A).Except(B,function(value){ 
    return value;
}).ToArray();

Αποτέλεσμα:

image

Intersect

intersect_thumb

Η τομή είναι μια πράξη μεταξύ δυο συνόλων στην οποία επιλέγονται όλα εκείνα τα στοιχεία που υπάρχουν και στα δυο σύνολα. Στην παραπάνω εικόνα η κόκκινη περιοχή είναι εκείνη που περιλαμβάνει τα στοιχεία και των δυο συνόλων.

Αρχείο: intersect.js

var A = [1,2,3,4,5];
var B = [5,4,3,9,8];

Enumerable.From(A).Intersect(B).ToArray();
Enumerable.From(B).Intersect(A).ToArray();

Enumerable.From(B).Intersect(A,function(value){
    return value;
}).ToArray();

Αποτέλεσμα:

image

Union

union_thumb

Με την πράξη της ένωσης επιλέγουμε όλα τα στοιχεία και των δυο συνόλων ανεξαιρέτως αν είναι κοινά ή όχι. Ωστόσο επιστρέφονται διακριτά αυτές οι τιμές, αν για παράδειγμα και στα δυο σύνολα υπάρχει η τιμή 4 τότε αυτή θα επιστραφεί μια φορά και όχι δυο.

Αρχείο: union.js

var arr1 = [1,2,3,4,5];
var arr2 = [6,7,3,9,5];
Enumerable.From(arr1).Union(arr2).ToArray();

Αποτέλεσμα:

image