Для циклов в функциях JavaScript - PullRequest
0 голосов
/ 01 июля 2018
const animals = ["dog", "cat", "tree frog"];

function pluralize(array) {
  for (var i = 0; i <= array.length; i++) {
    array[i] += "s"
    return (array)
  }
}
console.log(pluralize(animals));

Моя цель - создать функцию, которая добавляет в конец слова s. Однако, когда я запустил мой код s был добавлен только к первому слову в массиве. Почему s не был добавлен к другим словам в массиве?

Ответы [ 6 ]

0 голосов
/ 01 июля 2018

Поскольку вы, кажется, используете ES6 / 20xx, подойдет простой map. Если вы хотите изменить массив, используйте pluralizeMutating.

const pluralize = array => array.map(v => `${v}s`);
const pluralizeMutating = array => array.forEach( (v, i) => array[i] += "s" );
let animals = ["dog", "cat", "tree frog"];
console.log(`Pluralized: [${pluralize(animals)}]`);
console.log(`animals Array is not touched: [${animals}]`);
pluralizeMutating(animals);
console.log(`pluralizeMutating ran - animals Array is now: [${animals}]`);
0 голосов
/ 01 июля 2018

const animals = ["dog", "cat", "tree frog"];

function pluralize(array){
  for(var i=0;i < array.length;i++){
    array[i] += "s"
   }
  return array; 
}
   
console.log(pluralize(animals));

Прежде всего, ваш return будет выполнен в первом цикле и выйдет из цикла, который не соответствует вашим ожиданиям, и, следовательно, выйдет из цикла и поместится в конец функции.

Во-вторых, i <= array.length затронет array index outOfBound вопросов. Причина в том, что array.length == 4 и array[4] += "s" неверны, поскольку у вас нет элемента в array[4].

Рекомендуется изменить имя параметра в вашей функции pluralize с array на другое, например arr, просто для улучшения читабельности, поскольку очень похожее слово, например Array, является ключевым словом / резервным словом

0 голосов
/ 01 июля 2018

Есть несколько проблем с вашей программой.

  1. Вы выполняете итерацию от нуля до длины, большей. i<=array.length;.
  2. Вы возвращаетесь внутрь for loop.

const animals = ["dog", "cat", "tree frog"];
    function pluralize(array){
	    for(var i=0;i<array.length;i++){
		    array[i] += "s";
	    }
	    return (array);
    }
 console.log(pluralize(animals));

Приведенная выше программа выдаст соответствующий результат.

0 голосов
/ 01 июля 2018

Пожалуйста, измените i<=array.length на i<array.length.

В противном случае это вызовет бесконечный цикл.

for(var i=0;i<array.length;i++){
            array[i] += "s" ;

    }
   return (array)//take it outside of for loop.
  }
0 голосов
/ 01 июля 2018

var animals = ["dog", "cat", "tree frog"];
function pluralize(array){
  for(var i=0;i<=array.length;i++){
      array[i] += "s" ;
       } 
 return (array);
 }

Вы возвращаетесь для цикла. Это не правильно

0 голосов
/ 01 июля 2018

Использовать оператор возврата после завершения цикла.
Также цикл должен повторяться от 0 до меньше, чем array.length, а не меньше и равно.

function pluralize(array){
  for(var i=0;i<array.length;i++){
      array[i] += "s" ;
       } 
 return (array);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...