Как я могу преобразовать строку в логическое значение в JavaScript?

Вы можете сделать это

, это единственный способ увидеть:

<html>
    <head>

        <title>Open exe</title>

        <script type="text/javascript">
        function runProgram()
        {
            var shell = new ActiveXObject("WScript.Shell");                 
            var appITunes = "\"C:\\Program Files\\iTunes\\iTunes.exe\" ";
            shell.Run(appITunes);
        }        
        </script>

    </head>



    <body>

        <a href="javascript:runProgram()">Run program</a>

    </body>

</html>
2264
задан Kevin 5 November 2008 в 00:13
поделиться

14 ответов

Сделайте:

var isTrueSet = (myValue == 'true');

Вы могли сделать его более строгим при помощи оператора (===) идентификационных данных, который не делает неявных преобразований типов, когда сравненные переменные имеют различные типы вместо оператора равенства (==).

var isTrueSet = (myValue === 'true');
<час>

не Делайте:

Вы должны, вероятно быть осторожными относительно использования этих двух методов для Ваших определенных потребностей:

var myBool = Boolean("false");  // == true

var myBool = !!"false";  // == true

Любая строка, которая не является пустой строкой, оценит к true при помощи их. Хотя они - самые чистые методы, я могу думать о касающемся к булеву преобразованию, я думаю, что они не то, что Вы ищете.

3047
ответ дан 5 revs, 5 users 42% 5 November 2008 в 00:13
поделиться

Необходимо разделить (во взглядах) значение выборов и представление того значения.

Выбор точка в логике JavaScript, где они должны перейти от строковых сигнальных меток до собственного типа и сделать сравнение там, предпочтительно где это только сделано однажды для каждого значения, которое должно быть преобразовано. Не забудьте обращаться к тому, какие потребности произойти, если строковая сигнальная метка каждый не сценарий, знает (т.е. действительно ли Вы принимаете значение по умолчанию к истинному или ко лжи?)

, Другими словами, да, необходимо зависеть от значения строки.:-)

6
ответ дан staticsan 5 November 2008 в 00:13
поделиться

Ваше решение прекрасно.

Используя === просто было бы глупо в этом случае, как поле value всегда будет String.

30
ответ дан Jonny Buchanan 5 November 2008 в 00:13
поделиться

Можно использовать регулярные выражения:

/*
 * Converts a string to a bool.
 *
 * This conversion will:
 *
 *  - match 'true', 'on', or '1' as true.
 *  - ignore all white-space padding
 *  - ignore capitalization (case).
 *
 * '  tRue  ','ON', and '1   ' will all evaluate as true.
 *
 */
function strToBool(s)
{
    // will match one and only one of the string 'true','1', or 'on' rerardless
    // of capitalization and regardless off surrounding white-space.
    //
    regex=/^\s*(true|1|on)\s*$/i

    return regex.test(s);
}

, Если Вам нравится расширять Строковый класс, можно сделать:

String.prototype.bool = function() {
    return strToBool(this);
};

alert("true".bool());

Для тех (см. комментарии), который хотел бы расширить Строковый объект получить это, но волнуется по поводу перечислимости и волнуются по поводу столкновения с другим кодом, который расширяет Строковый объект:

Object.defineProperty(String.prototype, "com_example_bool", {
    get : function() {
        return (/^(true|1)$/i).test(this);
    }
});
alert("true".com_example_bool);

(Не будет работать в более старых браузерах, конечно, и Firefox, показывает ложь в то время как Opera, Chrome, Safari и верное шоу IE. Ошибка 720760 )

111
ответ дан 4 revs, 2 users 60% 5 November 2008 в 00:13
поделиться

Не забудьте соответствовать случаю:

var isTrueSet = (myValue.toLowerCase() === 'true');

кроме того, если это - флажок элемента формы, можно также обнаружить, если флажок проверяется:

var isTrueSet = document.myForm.IS_TRUE.checked;

Предположение, что, если это проверяется, это "установлено" равное истинному. Это оценивает как истинное/ложное.

119
ответ дан Jared Farrish 5 November 2008 в 00:13
поделиться

Я думаю, что это очень универсально:

if (String(a) == "true")...

Это идет:

String(true) == "true"     //returns true
String(false) == "true"    //returns false
String("true") == "true"   //returns true
String("false") == "true"  //returns false
158
ответ дан 4 revs, 3 users 70%ander 5 November 2008 в 00:13
поделиться
 var myBool = Boolean.parse("true");

или

var myBool = Boolean("true");

или

var myBool = !!"true";

Не уверенный, если первым является конкретный IE.

-31
ответ дан FlySwat 5 November 2008 в 10:13
поделиться

Если существует некоторый другой код, это преобразовывает булево значение в строку, необходимо знать точно, как тот код хранит истинные/ложные значения. У или этого или Вас должен быть доступ к функции, которая инвертирует то преобразование.

существует бесконечно много способов представить булевы значения в строках ("верный", "Y", "1", и т.д.). Таким образом, Вы не должны полагаться на некоторый преобразователь строки к булевской переменной общего назначения, как булевская переменная (myValue). Необходимо использовать стандартную программу, которая инвертирует исходную булевскую переменную к преобразованию строк, независимо от того, что это.

, Если Вы знаете, что это преобразовывает истинные булевские переменные в "истинные" строки, затем Ваш пример кода прекрасен. За исключением того, что необходимо использовать === вместо ==, таким образом, нет никакого автоматического преобразования типов.

1
ответ дан JW. 5 November 2008 в 10:13
поделиться
stringToBoolean: function(string){
    switch(string.toLowerCase().trim()){
        case "true": case "yes": case "1": return true;
        case "false": case "no": case "0": case null: return false;
        default: return Boolean(string);
    }
}
209
ответ дан 22 November 2019 в 19:55
поделиться
Boolean.parse = function (str) {
  switch (str.toLowerCase ()) {
    case "true":
      return true;
    case "false":
      return false;
    default:
      throw new Error ("Boolean.parse: Cannot convert string to boolean.");
  }
};
13
ответ дан 22 November 2019 в 19:55
поделиться
if (String(a) == "true"){
  //true block
} else {
  //false block
}
2
ответ дан 22 November 2019 в 19:55
поделиться

Достаточно следующего

String.prototype.boolean = function() {
    return "true" == this; 
};

"true".boolean() // returns true "false".boolean() // returns false
1
ответ дан 22 November 2019 в 19:55
поделиться

Я надеюсь, что это - самый всесторонний вариант использования

function parseBoolean(token) {
  if (typeof token === 'string') {
    switch (token.toLowerCase()) {
      case 'on':
      case 'yes':
      case 'ok':
      case 'ja':
      case 'да':
      // case '':
      // case '':
        token = true;
        break;
      default:
        token = false;
    }
  }
  let ret = false;
  try {
    ret = Boolean(JSON.parse(token));
  } catch (e) {
    // do nothing or make a notification
  }
  return ret;
}
0
ответ дан 22 November 2019 в 19:55
поделиться

Просто делайте A:

var myBool = eval (yourString);

Примеры:

alert (eval ("true") == true); // TRUE
alert (eval ("true") == false); // FALSE
alert (eval ("1") == true); // TRUE
alert (eval ("1") == false); // FALSE
alert (eval ("false") == true); // FALSE;
alert (eval ("false") == false); // TRUE
alert (eval ("0") == true); // FALSE
alert (eval ("0") == false); // TRUE
alert (eval ("") == undefined); // TRUE
alert (eval () == undefined); // TRUE

Этот метод обрабатывает пустую строку и undefined String, как если бы вы объявляете переменную, не назначаете его значение.

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

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