Как завершить скрипт в JavaScript?

Учитывая

sequence = '1011101111'
sub = "11"

Код

В этом конкретном случае:

sum(x == tuple(sub) for x in zip(sequence, sequence[1:]))
# 5

В более общем смысле это

windows = zip(*([sequence[i:] for i, _ in enumerate(sequence)][:len(sub)]))
sum(x == tuple(sub) for x in windows)
# 5

или перейти к генераторам:

import itertools as it


iter_ = (sequence[i:] for i, _ in enumerate(sequence))
windows = zip(*(it.islice(iter_, None, len(sub))))
sum(x == tuple(sub) for x in windows)

Альтернатива

Вы можете использовать more_itertools.locate :

import more_itertools as mit


len(list(mit.locate(sequence, pred=lambda *args: args == tuple(sub), window_size=len(sub))))
# 5

123
задан mikemaccana 8 March 2019 в 03:16
поделиться

3 ответа

JavaScript, эквивалентный для PHP's die . BTW, который это просто называет exit() (благодарит splattne):

function exit( status ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Brett Zamir (http://brettz9.blogspot.com)
    // +      input by: Paul
    // +   bugfixed by: Hyam Singer (http://www.impact-computing.com/)
    // +   improved by: Philip Peterson
    // +   bugfixed by: Brett Zamir (http://brettz9.blogspot.com)
    // %        note 1: Should be considered expirimental. Please comment on this function.
    // *     example 1: exit();
    // *     returns 1: null

    var i;

    if (typeof status === 'string') {
        alert(status);
    }

    window.addEventListener('error', function (e) {e.preventDefault();e.stopPropagation();}, false);

    var handlers = [
        'copy', 'cut', 'paste',
        'beforeunload', 'blur', 'change', 'click', 'contextmenu', 'dblclick', 'focus', 'keydown', 'keypress', 'keyup', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'resize', 'scroll',
        'DOMNodeInserted', 'DOMNodeRemoved', 'DOMNodeRemovedFromDocument', 'DOMNodeInsertedIntoDocument', 'DOMAttrModified', 'DOMCharacterDataModified', 'DOMElementNameChanged', 'DOMAttributeNameChanged', 'DOMActivate', 'DOMFocusIn', 'DOMFocusOut', 'online', 'offline', 'textInput',
        'abort', 'close', 'dragdrop', 'load', 'paint', 'reset', 'select', 'submit', 'unload'
    ];

    function stopPropagation (e) {
        e.stopPropagation();
        // e.preventDefault(); // Stop for the form controls, etc., too?
    }
    for (i=0; i < handlers.length; i++) {
        window.addEventListener(handlers[i], function (e) {stopPropagation(e);}, true);
    }

    if (window.stop) {
        window.stop();
    }

    throw '';
}
73
ответ дан Qantas 94 Heavy 8 March 2019 в 13:16
поделиться
  • 1
    Это кажется полезным, как я использую его с файлом Python? – Willow 10 March 2013 в 16:07

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

Примечание, что на практике, интерпретаторы JavaScript большинства браузеров просто прекратят запускать текущий скрипт, если они встретятся с ошибкой. Таким образом, можно сделать что-то как доступ к атрибуту переменной сброса:

function exit() {
    p.blah();
}

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

РЕДАКТИРОВАНИЕ : хорошо, возможно, это не было таким хорошим ответом в свете Г “lafur's. Хотя эти die() функция он связал с в основном реализациями мой второй абзац, т.е. это просто бросает ошибку.

0
ответ дан David Z 8 March 2019 в 13:16
поделиться

я использую эту часть кода для остановки выполнения:

throw new FatalError("!! Stop JS !!");

Вы получите консольную ошибку хотя, но она работает хорошая для меня.

0
ответ дан 24 November 2019 в 00:39
поделиться
Другие вопросы по тегам:

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