Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Подскажите пожалуйста почему он не меняет значение (https://javascript.ru/forum/misc/71997-podskazhite-pozhalujjsta-pochemu-ne-menyaet-znachenie.html)

AkezhanOb1 27.12.2017 21:06

Подскажите пожалуйста почему он не меняет значение
 
Надо в предложений(str) поменять слова (before) на (after)

вывод должен быть He is sitting on the couch

но почему то все равно возвращает He is sleeping on the couch

хотя если в функцию написать var word = (cur !== before) ? cur : after;
alert(word) он все правильно выводит (He is sitting on the couch)


function myReplace(str, before, after) { 
  str = str.split(" ");
   return str.filter( function(cur) {
        return (cur !== before) ? cur : after;
  });
}
alert(myReplace("He is sleeping on the couch", "sleeping", "sitting"));

рони 27.12.2017 21:44

AkezhanOb1,
filter тут причём?

Nexus 27.12.2017 21:46

https://learn.javascript.ru/array-iteration#filter
Цитата:

Сообщение от learn.javascript.ru
Метод «arr.filter(callback[, thisArg])» используется для фильтрации массива через функцию.
Он создаёт новый массив, в который войдут только те элементы arr, для которых вызов callback(item, i, arr) возвратит true.

Чем обычный replace не угодил?

рони 27.12.2017 22:16

AkezhanOb1,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

ruslan_mart 28.12.2017 00:02

AkezhanOb1, вместо filter используйте map.

рони 28.12.2017 00:12

Цитата:

Сообщение от ruslan_mart
вместо filter используйте map.

ты знал, ты знал :lol:
но маловато будет :write:


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