Как правильно проверить на равенство строк в JavaScript?

Как насчет этого:

a = array([1, 1])

l = [np.array([1,1]), np.array([2,2])]
list(map(lambda x: np.array_equal(x, a), l)

[True, False]
754
задан Kevin B 17 December 2015 в 23:17
поделиться

2 ответа

всегда Пока вы полностью не понимаете различия и последствия использования операторов == и ===, используйте === оператор, поскольку он убережет вас от непонятных (неочевидных) ошибок и WTF. «Обычный» оператор == может давать очень неожиданные результаты из-за внутреннего приведения типов, поэтому всегда рекомендуется использовать ===.

Чтобы лучше понять эту и другие «хорошие и плохие» части Javascript, прочитайте о г-не Дугласе Крокфорде и его работе.Есть отличный Google Tech Talk, где он резюмирует много полезной информации: http://www.youtube.com/watch?v=hQVTIJBZook


Обновление:

The You Don’t Know JS Серия Кайла Симпсона превосходна (и доступна для чтения онлайн). В сериале рассматриваются часто неправильно понимаемые области языка и объясняются «плохие части», которых Крокфорд советует избегать. Поняв их, вы сможете правильно их использовать и избежать ловушек.

Книга «Up & Going» включает раздел о равенстве с этим конкретным описанием того, когда следует использовать свободное (==) и строгое (===) операторы:

Чтобы свести множество деталей к нескольким простым выводам и помочь вам понять, следует ли использовать == или = == в различных ситуациях, вот мои простые правила:

  • Если какое-либо значение (иначе сторона) в сравнении может быть истинным или ложным, избегайте == и используйте ===.
  • Если какое-либо значение в сравнении может иметь эти конкретные значения (0, "" или [] -- пустой массив), избегайте == и используйте ===.
  • В всех других случаях можно безопасно использовать ==. Это не только безопасно, но и во многих случаях упрощает ваш код, повышая его читабельность.

Я по-прежнему рекомендую выступление Крокфорда разработчикам, которые не хотят тратить время на то, чтобы по-настоящему понять Javascript — это хороший совет для разработчика, который лишь изредка работает с Javascript.

595
ответ дан 22 November 2019 в 21:19
поделиться

Если вы знаете, что это строки, то нет необходимости проверять тип.

"a" == "b"

Однако обратите внимание, что строковые объекты не будут равны.

new String("a") == new String("a")

вернет false.

Вызовите метод valueOf(), чтобы преобразовать его в примитив для объектов String,

new String("a").valueOf() == new String("a").valueOf()

возвратит true

193
ответ дан 22 November 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: