2013-07-09 7 views
8

C'è qualche motivo per cui una stringa non sarebbe uguale a se stessa? Sto elaborando una grande quantità di stringhe e alcune stringhe, alla fine, non si equivalgono.C'è qualche ragione per cui una stringa JS non sarebbe uguale a se stessa? (vedi foto)

Ecco un'immagine che mostra di cosa sto parlando.

Example Image

Tutte le idee?

RISOLTO: C'è un ritorno a capo (\ r) collegato alla fine di una delle stringhe. Ho usato String.length per vedere le lunghezze di ogni stringa, e hanno differito (5 e 6). Ho quindi esaminato la stringa utilizzando String.charAt. In Chrome, questo mostrava una stringa vuota (""). Tuttavia, la stringa vuota non era un valore falsato. Ho provato questo in FireFox e ha mostrato il ritorno a capo.

+0

http://stackoverflow.com/questions/8914902/how-do-two-identical-strings-not-equal-each-other – Chris

+0

Come "RGD.symbol' diventa improvvisamente' rgdMap ['snail '] .symbol'? Sei sicuro di confrontare i valori giusti? – adeneo

+0

@adeneo Dove vedi 'RGD.symbol' ovunque? La precedente linea di console che è stata interrotta è ovviamente 'rdgMap ['snai1']' –

risposta

10

In qualsiasi lingua se una stringa contiene caratteri illeggibili, e l'altra no, saranno diversi anche se sembrano uguali da umani.

Prova stampare le loro lunghezze e stamparli char-to-char

+0

Si è scoperto che c'è una stringa vuota attaccata alla fine di uno di essi. Grazie! –

-1

E 'probabile che si sta confrontando un tipo di valore stringa in una stringa.

Vedi Difference between the javascript String Type and String Object?

Soluzione: utilizzare sia String.valueOf() oppure utilizzare doppia uguale anziché triple e lasciare JavaScript costringere l'oggetto String per un valore di stringa.

Dalla mia console a = new String ("asdf"); b = "asdf"; a === b; // false a == b; // true a.valueOf() === b.valueOf(); // true

+1

== dà anche false. Vedi l'immagine – RiaD

+0

Non è un oggetto String, puoi dire dall'immagine. Ecco come appare un oggetto String: http://i.imgur.com/Dcmo2fY.png –

+0

'" foo "== new String (" foo ") // true' – numbers1311407

Problemi correlati