Wpis z mikrobloga

@m4kb0l: Chodzi o to że jak wrzucę już raz przefiltrowany arr do funkcji checkPairs, to chciałbym, aby została znów przefiltrowana.
Pierwsze wrzucam arr do funkcji z której powstaje nowy arr. Klonuje go za pomocą spread operator i jeszcze raz wrzucam do funkcji. Niestety wyniki są takie same, czyli tak jakbym wykonał to z arr.
checkPairs(tempArr, arrOposite).
via Wykop Mobilny (Android)
  • 0
@Sheppard28: hmmm... Co mi daje sprawdzenie parzystości? Chcę usunąć z array takie kierunki jak EW, WE, NS i SN. I np. Zostanie w tablicy samo W bo nie ma pary lub ESWN bo nie są obok siebie. Problem jest że po pierwszym filtrowaniu niektóre kierunki przeciwstawne, mogą znałeś się obok siebie i znów trzeba przefiltrować
@Sheppard28:
Nie jestem jeszcze przyzwyczajony do tych nowych metod i twój kod wydaje mi się bardziej skomplikowany. ( ͡° ͜ʖ ͡°)

Może łatwiej sprawdzić o co chodzi jak podam dane do testów:

Test.assertSimilar(dirReduc(["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]), ["WEST"])
Test.assertSimilar(dirReduc(["NORTH", "WEST", "SOUTH", "EAST"]), ["NORTH", "WEST", "SOUTH", "EAST"])
Test.assertSimilar(dirReduc(["NORTH", "SOUTH", "EAST", "WEST", "EAST", "WEST"]), [])
@Sheppard28: Część testów wykonano się dobrze i to uśpiło moją czujność. Błąd był w warunku.

Powinien być:

if ((arrPair.toString() === arrOposite[0].toString()) || (arrPair.toString() === arrOposite[1].toString()))

Błąd był też w zerowaniu licznika i. Powinno być i = -1;

Teraz nie trzeba sprawdzać kolejny raz, bo z każdą usuniętą parą, sprawca array od początku :)

A tutaj rozwiązanie z użyciem reduce:

function dirReduc(plan) {
var opposite = {
'NORTH': 'SOUTH', 'EAST': 'WEST', 'SOUTH':