» »

Javascript pomoc primerjava stringov

Javascript pomoc primerjava stringov

eric_cartman ::

Živjo!

Imam nek primer, ki ga rešujem oz. me zanima princip kako se to reši.
Rabil bi primerjat string s stringi v js object-u.

Nekako takole:

let test = "ABCDEF123456";

let testobject = {
"crke":{
crkeena: "ABC",
crkedva: "DEF"
},
"stevilke":{
stevilkeena: "123",
stevilkedva: "456"
}
};

Rad bi primerjal če vsota vseh stringov v objektu res sestavlja zgornji string test.

Torej najprej sem uporabil forEachloop. In potem uporabil metodo includes(). Ampak dobim nek false positive. Ker localeCompare() metoda mi recimo vrne -1, kar pomeni, da se ne ujema.

In bi prosil za pomoč, kako naj se tega lotim.

Hvala!
Lp

kuall ::

Brez spretnosti iskanja po internetu se ti slaba piše kot programerju. Sem že videl take programerje, nič ne najdejo.

Tukaj je treba iskat
javascript loop object nested
in dobiš npr:
https://stackoverflow.com/questions/808...

Drgač pa poskušanje (z bolj preprostimi primeri, če ne gre) bi tukaj lepo delovalo, pa še naučil bi se. Chome, IE itd javascript debugger znaš uporabljat?

jype ::

Najlažje tako, da splezaš po objektu:

function allStrings(obj) {
  var ret = [];
  for (var prop in obj) {
    if (obj.hasOwnProperty(prop)) {
      switch (typeof(obj[prop])) {
        case "object": ret = ret.concat(allStrings(obj[prop])); break;
        case "string": ret.push(obj[prop]); break;
      }
    }
  }
  return ret;
}


Potem pa lahko rečeš:
if (allStrings(testobject) == test) console.log("Špila.");


Pozor, koda je napisana iz glave, tako da ne vem, če deluje.

Zgodovina sprememb…

  • spremenilo: jype ()

Nublet ::

OP, v zgornji jype-ov primer le dodaj pri return stavku .join(""), da iz vrnjenih tabel dobiš niz za primerjavo. Ti je dal lep primer rekurzije za traverz objektov, katerega koncept lahko uporabiš marsikje:
function allStrings(obj) {
  var ret = [];
  for (var prop in obj) {
    if (obj.hasOwnProperty(prop)) {
      switch (typeof(obj[prop])) {
        case "object": ret = ret.concat(allStrings(obj[prop])); break;
        case "string": ret.push(obj[prop]); break;
      }
    }
  }
  return ret.join("");
}


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Slo-Tech userscripts

Oddelek: Izdelava spletišč
175238 (2690) jype
»

Speech recognition

Oddelek: Programiranje
143461 (1518) simba89
»

Download vsebine strani s JS

Oddelek: Izdelava spletišč
472581 (1879) MrBrdo
»

Masterpage in jQuery(ajax call)

Oddelek: Programiranje
61373 (1201) hatchette
»

c# kako v prvi IEnumerable addati samo "Accaptable" tipe iz drugega IEnumerabla

Oddelek: Programiranje
51131 (1055) commissar

Več podobnih tem