Содержит - не работает


  • Banned

    В общем ресурс в список, там ссылка на профиль вконтакте.
    Списки > Парсить строку - ID
    Указываю переменную содержащую список
    Далее содержит ID пишет false

    Что не так ? Кодировка UTF-8 везде



  • @freeliman Содержит(indexOf) в списках работает только по полному совпадение.


  • Banned

    Не понял ? полное совпадение. Беру одну и ту же ссылку и проверяю, содержит список её или нет.



  • @freeliman Я тоже не особо понимаю программирование выраженное обычным языком )


  • Banned

    Так и что делать ? Как проверить содержание ? У меня ссылок будет тысячи



  • @freeliman У меня работает. Давайте тестовый скрипт и файл ссылок


  • Banned

    @drprime

    https://vk.com/alinacat5
    https://vk.com/id416041287
    https://vk.com/id509893152
    

    Вот ссылки на каких то детей. Вот мне надо проверить есть ли в списке эти ссылки.

    по сути два тхт файла. если один файл содержит такую ссылку, то хочу игнорировать её


  • Banned

    Ну что работает ?



  • @freeliman работает


  • Banned

    и как вы это сделали? через список парсить строку ? ведь я не могу обычным действием парсить строку, парсить двоеточие, в строке есть адрес который содержит :

    и я использую другое действие.
    ещё использую действие ресурс в список



  • @freeliman
    Я кажется понял Вашу проблему.

    У вас список вида
    url:текст ?

    Если так, то действие не будет работать, если искать url, так как требуется полное совпадение, то есть url:текст



  • @freeliman
    @drprime said in Содержит - не работает:

    @freeliman
    Я кажется понял Вашу проблему.

    У вас список вида
    url:текст ?

    Если так, то действие не будет работать, если искать url, так как требуется полное совпадение, то есть url:текст

    О чем я с самого начала и сказал )



  • @usertrue кто вам такое сказал? indexOf ищет подстроку указанную. НЕважно какая часть это.



  • var re = "alinacat5";
    var text = "https://vk.com/alinacat5:Some text";
    if(text.indexOf(re)){
        log(true)
    } else {
        log(false)
    }
    

    alt text



  • А вот сам экшн

    alt text

    Вернет false т.к он именно ищет по полному совпадению.



  • @qwaros

    @qwaros said in Содержит - не работает:

    @usertrue кто вам такое сказал? indexOf ищет подстроку указанную. НЕважно какая часть это.

    Документация JS, например тут https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf#Description

    @qwaros said in Содержит - не работает:

    var re = "alinacat5";
    var text = "https://vk.com/alinacat5:Some text";
    if(text.indexOf(re)){
        log(true)
    } else {
        log(false)
    }
    

    alt text

    Этот ваш пример про поиск по строке. А есть два разных IndexOf и речь была о массиве(списке)

    @usertrue said in Содержит - не работает:

    @freeliman Содержит(indexOf) в списках работает только по полному совпадение.

    Вот пример как будет

    var arr = ["привет мир", "яблоко"];
    log(arr.indexOf("привет")>-1); //return false
    log(arr.indexOf("привет мир")>-1); //return true
    


  • @usertrue said in Содержит - не работает:

    @qwaros

    @qwaros said in Содержит - не работает:

    @usertrue кто вам такое сказал? indexOf ищет подстроку указанную. НЕважно какая часть это.

    Документация JS, например тут https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf#Description

    @qwaros said in Содержит - не работает:

    var re = "alinacat5";
    var text = "https://vk.com/alinacat5:Some text";
    if(text.indexOf(re)){
        log(true)
    } else {
        log(false)
    }
    

    alt text

    Этот ваш пример про поиск по строке. А есть два разных IndexOf и речь была о массиве(списке)

    @usertrue said in Содержит - не работает:

    @freeliman Содержит(indexOf) в списках работает только по полному совпадение.

    Вот пример как будет

    var arr = ["привет мир", "яблоко"];
    log(arr.indexOf("привет")>-1); //return false
    log(arr.indexOf("привет мир")>-1); //return true
    

    Для массива да, но что мешает собрать список (массив) в строку да тестануть? Если массив небольшой, потом если нашли соответствие, перебираем массив в поисках нужного ключа, если нет идем дальше



  • @qwaros От скуки сделал тест скорости. Сравнил метод join + indeOf и цикл for + indexOf

    var testArr = [];
    var strTest = "Цена от 50000";
    
    for(i=1;i<=100000;i++) {
    	testArr.push("Пишу скрипты любой сложности, очень дорого. Цена от " +i);
    };
    
    var resultTime = {};
    function speedTest(func) {
    	return function() {
    		var startTime = Date.now();
    		func.apply(null,arguments);
    		if(!resultTime[func.prototype.constructor.name]) resultTime[func.prototype.constructor.name] = 0;
    		resultTime[func.prototype.constructor.name] +=Date.now() - startTime;	
    	};
    };
    
    function strJoin(arr,str) {
    	return arr.join(",").indexOf(str);
    };
    
    function cycle(arr,str) {
    	for(i = arr.length - 1;i>=0;i--) {
    		if(arr[i].indexOf(str)>=0) return true;
    	};
    };
    
    var speedJoin = speedTest(strJoin);
    var speedCycle = speedTest(cycle);
    
    for (i = 0;i<10;i++) {
    	speedJoin(testArr,strTest);
    };
    
    for (i = 0;i<10;i++) {
    	speedCycle(testArr,strTest);
    };
    
    for(func in resultTime){
    	console.log("Среднее время функции: " + func + ":" + resultTime[func]/10 + "ms");
    };
    

    Результат
    Среднее время функции: strJoin:49ms
    Среднее время функции: cycle:7.7ms


Log in to reply