დიზაინი და განვითარება

დიზაინი და განვითარება

JavaScript- ის შემამცირებლის დეტალები - მარტივი, მაგრამ ძლიერი მასივის მეთოდი

Javascript ამცირებს მეთოდის პარამეტრებს

reduce მეთოდი ორ არგუმენტს: ა შეამცირა ფუნქცია მასივი, რომელიც გამოიყენება როგორც გადმორეკე, და სურვილისამებრ  initialValue არგუმენტი. შეამცირა ფუნქცია იღებს ოთხი არგუმენტები:  accumulator,  currentValue,  currentIndex, და  array.

Javascript მასივის მაგალითზე მოქმედების  შემცირება  :

ამ  შემცირების  მეთოდი იგივე სამუშაოს ასრულებს, როგორც შემდეგი  for…each ციკლი, მაგრამ ნაკლები კოდის ხაზებით.

როგორ  reduce მიაღწია მას მეთოდმა ამ პარამეტრების გამოყენებით?

შემამცირებელი ფუნქციის მიერ დაბრუნებული მნიშვნელობა ენიჭება  accumulator ცვლადს. მასივის ელემენტების მეშვეობით თითოეულ გამეორებაში, აკუმულატორის მნიშვნელობა განახლდება დაბრუნებულ შედეგამდე. გამეორების ბოლოს, აკუმულატორის საბოლოო მნიშვნელობა უბრუნდება, როგორც reduce ფუნქციის გამომუშავება  .

თუ  initialValue არგუმენტი მიიღება, შემამცირებელი ფუნქციის შესრულებისას პირველად  accumulator იქნება ტოლი  initialValue და  currentValue ტოლი იქნება მასივში შენახული პირველი ელემენტი. თუ საწყისი მნიშვნელობა არ გაიცემა, ეს  accumulator იქნება მასივის პირველი მნიშვნელობის  currentValue ტოლი და მეორე.

ვნახოთ, როგორ იცვლება თითოეული ამ პარამეტრის მნიშვნელობები ყოველ ჯერზე, როდესაც ზარის უკუკავშირის ფუნქცია იწოდება, შემდეგ მაგალითში. აქ, ჩვენ არ ვაძლევთ  initialValue კამათს.

ამ ფუნქციის საბოლოო გამომავალია  10.

შემდეგ, ვნახოთ, როგორ მუშაობს, როდესაც  initialValue გადადის.

ამ ფუნქციით გამოდის მნიშვნელობა  22.

როდის გამოვიყენოთ JavaScript- ის შემამცირებელი

reduce მეთოდი უზრუნველყოფს უნიკალური გზა iterate მეშვეობით ნივთები მასივი და პროცესი მათ. რა სიტუაციაში შეიძლება ამ უნიკალურობით სარგებლობა მივიღოთ?

გამოთვალეთ მასივში მნიშვნელობების ჯამი

ეს იგივეა, რაც წინა მაგალითებში გავაკეთეთ. ერთადერთი განსხვავება ისაა, რომ initialValue პარამეტრისთვის 0 უნდა  გავიაროთ.

გაასწორეთ მასივი

თუ მასივების მასივი გვაქვს, შეგვიძლია გამოვიყენოთ შემცირების მეთოდი მისი გასწორებისთვის და შევქმნათ ერთი მასივი წყობილი მასივების გარეშე.

ჩვენ ვაძლევთ ცარიელ მასივს, როგორც საწყისი მნიშვნელობა, ასე რომ, პირველი მასივის ელემენტები გაერთიანებულია მასთან და ქმნის გაბრტყელებულ მასივს.

თუ პირველ მასივს აქვს ერთზე მეტი დონის წყობილი მასივი, შეგვიძლია რეკურსიულად მოვუწოდებთ შემცირების ფუნქციას სიბრტყეზე და შემდეგ გავაერთიანებთ მათ საბოლოო მასივთან.

თუ isArray გამოძახებით მიღებული მიმდინარე მნიშვნელობა არის მასივი, რაც დადასტურებულია მეთოდის გამოყენებით  , რეკურსიულად ვუწოდებთ მასზე არსებულ  flattenArray ფუნქციას. თუ ამჟამინდელი მნიშვნელობა არ არის მასივი, ჩვენ უბრალოდ გავაერთიანებთ მნიშვნელობას საბოლოო სიბრტყის მასივთან.

ობიექტების მასივის დაჯგუფება საკუთრების მიხედვით

დავუშვათ, რომ ჩვენ გვაქვს ობიექტების მასივი, რომლებიც ძირითადად ქვეყნების სახელებია - და ჩვენ გვინდა, რომ ჯგუფი დავაჯგუფოთ მასივში მათი კონტინენტების მიხედვით. reduce ამ ამოცანისთვის შეგვიძლია გამოვიყენოთ  მეთოდი. იხილეთ კოდის ფრაგმენტი ქვემოთ:

ზარის უკუკავშირის ფუნქციის შიგნით, ჩვენ ვქმნით ახალ გასაღებს თითოეული კონტინენტისთვის, რომელიც არ არის დაჯგუფებული ქვეყნების რუკაზე და მის მნიშვნელობას ცარიელ მასივს მივანიჭებთ. შემდეგ ჩვენ თითოეული ქვეყნის ობიექტს მივყავართ მასივში, რომელიც ინახება მათი კონტინენტებით.

შემცირების () გამოყენება ფილტრის ადგილას (). რუქა ()

JavaScript- ში ვიყენებთ  filter მეთოდს მასივში შენახული ნივთების გაფილტვრისათვის, უკუკავშირის გამოყენებით. ჩვენ ვიყენებთ რუქის მეთოდს ახალი მასივის შესაქმნელად ძველი მასივის გამოყენებით უკუკავშირის ლოგიკის გამოყენებით. ზოგჯერ ეს ორი მეთოდი უნდა გამოვიყენოთ, ერთმანეთის მიყოლებით, ახალი მასივის შესაქმნელად, რომლის შედეგადაც ვფილტრავთ გარკვეული პირობების გამოყენებით.

მასივის ორი მეთოდის ნაცვლად, შეგიძლიათ გამოიყენოთ JavaScript მასივის  reduce მეთოდი იგივე ამოცანის შესასრულებლად. ეს შეამცირებს დასრულების დროს, რადგან ახლა მასივის საშუალებით მხოლოდ ერთხელ გაიმეორებთ და არა ორჯერ.

მაგალითად, ავიღოთ შემდეგი სცენარი, სადაც გვინდა შევქმნათ კვადრატული ფესვების მასივი, რომელიც აღემატება 30-ს.

შემცირების გამოყენებით განხორციელებული იგივე სცენარი ასე გამოიყურება.

გამოძახების შიგნით, ჩვენ უბრალოდ ვამოწმებთ არის თუ არა რიცხვი 30-ზე მეტი და მას კვადრატულ ფესვს  accumulator ვუმატებთ მასივს. თქვენ უნდა გაიაროთ ცარიელი მასივი, როგორც საწყისი მნიშვნელობა, რომ მიიღოთ ეს შედეგი.

ააშენეთ საკუთარი რედუქტორი

ამ ნაწილში, ჩვენ ვაპირებთ განვახორციელოთ შემამცირებელი ფუნქცია საკუთარ თავზე, რომ ვნახოთ როგორ მუშაობს კაპოტის ქვეშ. ეს უკეთეს წარმოდგენას შეგიქმნით იმის შესახებ, თუ როდის გამოიყენოთ JavaScript რედუქტორი თქვენს პროგრამაში ოპტიმალური მუშაობისთვის.

პირველ რიგში, ჩვენ ვამოწმებთ, შემცირდა მეთოდი გამოძახებულია ნულოვან ან განუსაზღვრელ ობიექტზე. შემდეგ ჩვენ ვამოწმებთ, არის თუ არა გატარებული ზარის უკუკავშირი.

საწყისი ტიპის შემოწმების შემდეგ, ჩვენ გადავცემთ  initialValueაკუმულატორს. შემდეგ ჩვენ ვთვლით მასივს და ვუწოდებთ მასივში მასალის თითოეული პუნქტის გამოძახებას. შესრულების ბოლოს, ჩვენ უნდა დავაბრუნოთ აკუმულატორის მნიშვნელობა.

ჩვენ ამ განხორციელებას მხოლოდ იმისთვის ვიყენებთ, რომ გაიგოთ, რეალურად როგორ მუშაობს შემცირების მეთოდი. მაგალითად, თქვენ ხედავთ, რომ ის იყენებს  for მარყუჟს გამწოვის ქვეშ მასივის მეშვეობით.

ამასთან, გაითვალისწინეთ, რომ ეს გამოყენება არ უნდა გამოიყენოთ თქვენი წარმოების კოდში. სინამდვილეში, JavaScript სტანდარტული ტიპის პროტოტიპების მეთოდები არის კოდირების ცუდი პრაქტიკა, რომელსაც არასდროს უნდა გაითვალისწინოთ.

ვიმედოვნებ, რომ ეს ცოდნა დაგეხმარებათ იმ პრობლემების იდენტიფიცირებაში, რომელთა მოგვარება მომავალში შეიძლება შემცირდეს ზოგიერთი ამ შემთხვევის შემთხვევები ემთხვევა  forEach  და  map, და  filter მასივის მეთოდებს. ასე რომ, თქვენ უნდა იცოდეთ იმ სიტუაციების შერჩევა, რომელთა მოგვარებაც ოპტიმალურად შეიძლება,  reduce მეთოდის გამოყენებით.

ეს  სტატია  თავდაპირველად გამოქვეყნდა  Live Code Stream– ზე  ,  ხუან კრუზ მარტინესის მიერ  (twitter:  @bajcmartinez ), Live Code Stream– ის დამფუძნებელი და გამომცემელი, მეწარმე, დეველოპერი, ავტორი, სპიკერი და საქმის გამკეთებელი.

Live Code Stream  ასევე ხელმისაწვდომია როგორც უფასო ყოველკვირეული ბიულეტენი. დარეგისტრირდით განახლებების შესახებ ყველაფერთან დაკავშირებით, რაც დაკავშირებულია პროგრამირებასთან, AI- სთან და ზოგადად კომპიუტერულ მეცნიერებასთან.


გაზიარება

Andrea

Andrea