отфильтровать строку

425
03 января 2017, 00:19

Помогите с алгоритмом, или подскажите как правильно решить задачу.

есть строка:

'slug spider rock gravel gravel gravel gravel gravel gravel gravel';

я хочу вернуть отсортированную, условие, всё что не rock, заменить на gravel. a rock оставить как rock:

'gravel gravel rock gravel gravel gravel gravel gravel gravel gravel'

var garden1 = 'slug spider rock gravel gravel gravel gravel gravel gravel gravel'; 
 
function filtering(value) { 
  if (value == 'rock') { 
    return 'rock'; 
  } else { 
    return 'gravel' 
  } 
} 
 
 
function rakeGarden(garden) { 
  var rakedGarden = garden.split(' '); 
  rakedGarden.filter(filtering); 
} 
 
alert(rakeGarden(garden1));

Answer 1

Не ту (filter) функцию используете. map() обрабатывает каждый элемент массива. И раз нужна строка на выходе, то вернуть (у вас не было возврата значения из функции) ее надо через преобразование массива в строку с помощью join()

var garden1 = 'slug spider rock gravel gravel gravel gravel gravel gravel gravel'; 
 
function rakeGarden(garden) { 
  var rakedGarden = garden.split(' '); 
  return rakedGarden.map(function(value) { 
    if (value == 'rock') { 
      return 'rock'; 
    } else { 
      return 'gravel' 
    } 
  }).join(' ');  
} 
 
console.log(rakeGarden(garden1));

Answer 2

Добавил ещё вариант решения:

var garden1 = 'slug spider rock gravel gravel gravel gravel gravel gravel gravel'; 
 
const rakeGarden = garden => 
  garden 
  .split(' ') 
  .map(item => item === 'rock' ? 'rock' : 'gravel') 
  .join(' ') 
 
console.log(rakeGarden(garden1));

Answer 3

Вариант с использованием цикла for:

var garden1 = 'slug spider rock gravel gravel gravel gravel gravel gravel gravel'; 
 
function rakeGarden(garden) { 
 
  var tab = garden.split(" "); 
  for (var i = 0; i < tab.length; i++) { 
    if (tab[i] != 'rock' && tab[i] != 'gravel') { 
      tab[i] = 'gravel'; 
    } 
  } 
  var rakedGarden = tab.join(" "); 
 
  return rakedGarden; 
} 
 
 
console.log(rakeGarden(garden1));

READ ALSO
Таймер обратного отчета jquery [требует правки]

Таймер обратного отчета jquery [требует правки]

Здравствуйте! Нужен таймер обратного отчета, по истечению которого перебрасывает на indexhtml

407
jQuery получение определеного значения

jQuery получение определеного значения

Есть Таблица и в ней есть строки <td> Получаю их значение с помощью jQuery таким образомНо он дает мне все значения td

318
Исполнение JS в HTML через google app script

Исполнение JS в HTML через google app script

Работаю в битриксеТам используются google таблицы

415
Приведение строки в численный формат

Приведение строки в численный формат

Уже всё разобралОсталось только приведение поля к числу

368