Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите решить задачу (https://javascript.ru/forum/misc/74414-pomogite-reshit-zadachu.html)

nekit44 09.07.2018 14:08

Помогите решить задачу
 
Добрый день

Помогите плиз решить задачу на js

Суть задачи:
Есть 2 строки, в первой строке есть символ - *
Нужно найти его вхождение и удалить во второй строке все найденные вхождения, и из первой тоже удалить все *
чтобы получилось

var str = "Type=Cyber_TIME=*_5_K=1.7*";
var str2 = "Type=Cyber_TIME=3_5_K=1.70";

на выходе:
Type=Cyber_TIME=_5_K=1.7
Type=Cyber_TIME=_5_K=1.7


что "накодил" сам

var str = "Type=Cyber_TIME=*_5_K=1.7*";
    var str2 = "Type=Cyber_TIME=3_5_K=1.70";
    var target = "*"; // цель поиска
    var all = [];
    var pos = 0;
    while (true) {
        var foundPos = str.indexOf(target, pos);
        if (foundPos == -1) break;
        all.push(foundPos);
        pos = foundPos + 1;
    }


    all.forEach(function (item, i, all) {
        alert(item);
        str[item] = '';
        str2[item] = '';
    });
    console.log(str);


Помогите плиз

laimas 09.07.2018 14:20

str = str.replace(/\*/g,'')

nekit44 09.07.2018 14:29

не, нужно номера букв в строке 2 удалить там где стоит * в строке 1

рони 09.07.2018 14:30

nekit44,
var str = "Type=Cyber_TIME=*_5_K=1.7*";
    var str2 = "Type=Cyber_TIME=3_5_K=1.70";
    var target = "*"; // цель поиска
    var all = [];
    var pos = 0;
    while (true) {
        var foundPos = str.indexOf(target, pos);
        if (foundPos == -1) break;
        all.push(foundPos - all.length);
        pos = foundPos + 1;
    }


    all.forEach(function (item, i) {
        str = str.slice(0,item) + str.slice(item+1)
        str2 = str2.slice(0,item) + str2.slice(item+1)
    });
    console.log(str, str2);

nekit44 09.07.2018 14:44

Цитата:

Сообщение от рони (Сообщение 489351)
код

Спасибо огромное!
Я был почти у цели)

рони 09.07.2018 14:57

nekit44,
если нужно, можно добавить длину target
var str = "Type=Cyber_TIME=*_5_K=1.7*";
var str2 = "Type=Cyber_TIME=3_5_K=1.70";
var target = "*";
var len = target.length;
var all = [];
var pos = 0;
while (true) {
    var foundPos = str.indexOf(target, pos);
    if (foundPos == -1) break;
    all.push(foundPos - all.length * len);
    pos = foundPos + len
}
all.forEach(function(item) {
    str = str.slice(0, item) + str.slice(item + len);
    str2 = str2.slice(0, item) + str2.slice(item + len)
});
console.log(str, str2);

Dilettante_Pro 09.07.2018 15:32

Ходы кривые роет...

var str = "Type=Cyber_TIME=*_5_K=1.7*";
var str2 = "Type=Cyber_TIME=3_5_K=1.70";
for (var i = str.length - 1;i > -1; i--) {
   str[i] = str[i]==str2[i]?str[i]:"";
}
str2 = str;
console.log(str, str2);

...всегда идут в обход
var str = "Type=Cyber_TIME=*_5_K=1.7*";
var str2 = "Type=Cyber_TIME=3_5_K=1.70";
for (var i = str.length - 1;i > -1; i--) {
   str[i] = str[i]==str2[i]|str[i];
}
str2 = str;
console.log(str, str2);

nekit44 09.07.2018 15:47

Dilettante_Pro, идея прикольная но не работает

рони 09.07.2018 15:51

Dilettante_Pro,
какой из вариантов работает и где?

рони 09.07.2018 15:54

:write:
var str = "Type=Cyber_TIME=*_5_K=1.7*";
var str2 = "Type=Cyber_TIME=3_5_K=1.70";
str2 = str = [...str].filter(a => a != "*").join("");
console.log(str, str2);

рони 09.07.2018 16:05

:)
var str = "Type=Cyber_TIME=*_5_K=1.7*";
var str2 = "Type=Cyber_TIME=3_5_K=1.70";
str2 = str = [...str].reduce((a,b) => a += b == "*" ? "" : b, "" );
console.log(str, str2);

nekit44 09.07.2018 16:42

Спасибо огромное за помощь!!!

Но у всех примеров str2 просто присваивается на основании str
суть в том что они могут быть разными

и по той же причине ни как сравнивать по символам

вот я в виде кода изобразил, оно не работает но может так понятней будет

var str = "Type=Cyber_TIME=*_5_K=1.7*";
    var str2 = "Type=Cyber_TIME=3_6_K=1.70";
    for (var i = str.length - 1;i > -1; i--) {
        if (str[i] == "*"){
            str[i] = '';
            str2[i] = '';
        }else{
            str[i] = str[i];
            str2[i] = str2[i];
        }
    }
    console.log(str, str2);


и должно получиться

Type=Cyber_TIME=_5_K=1.7
Type=Cyber_TIME=_6_K=1.7

рони 09.07.2018 17:01

Цитата:

Сообщение от nekit44
Но у всех примеров str2 просто присваивается на основании str

пост №6

nekit44 09.07.2018 17:05

рони, Дружище! Спасибо!
Все просто - ОГОНЬ!

Спасибо!

PS Посоветуйте книгу по js актуальную)

рони 09.07.2018 17:14

Цитата:

Сообщение от nekit44
PS Посоветуйте книгу по js актуальную)

выше на странице
Форум Учебник Книги Node.JS скринкаст Стандарт языка Справочник

Dilettante_Pro 09.07.2018 17:30

Цитата:

Сообщение от рони
какой из вариантов работает и где?

На самом деле это была шутка - nekit44 все правильно понял.

Проблема в том, что я ни в начале, ни после уточнения так и не понял постановку задачи.
После уточнения:
Цитата:

Сообщение от nekit44
и должно получиться

Type=Cyber_TIME=_5_K=1.7
Type=Cyber_TIME=_6_K=1.7

А если было, например,
var str = "Type=Cyber_TIME=*_5_K=1.7*";
var str2 = "Type=Cyber_TIME=3_66_K=1.70";

Или
var str = "Type=Cyber_TIME=*_5_K=1.7*";
var str2 = "Type=Cyber_TIME=30_6_K=1.70";

Что тогда?


Часовой пояс GMT +3, время: 14:49.