Функция, которая добавляет конец строки к каждому члену в массиве - PullRequest
2 голосов
/ 03 апреля 2019

Я хочу создать функцию JS, которая добавляет строку, заканчивающуюся к каждому члену в массиве. Ожидаемая функция при вызове должна возвращать что-то вроде этого:

addEnding(["clever", "meek", "hurried", "nice"], "ly")

Ожидаемый результат:

["cleverly", "meekly", "hurriedly", "nicely"] 

Спасибо за все ответы, предлагающие использовать метод map, но я хочу использовать цикл for, вот как выглядит мой код:

const addEnding = (arr, str) => {
  let result = '';
  for (i = 0; i < arr.length; i++) {
    result = arr[i]
    result += str
  }
  return result
}

console.log(addEnding(["new", "pander", "scoop"], "er"))

Проблема в том, что он возвращает только первый элемент массива, когда я ожидаю, что он вернет все элементы из массива + окончание строки

Ответы [ 10 ]

1 голос
/ 03 апреля 2019

Вы объявили результат как строку и заменили его в течение итерации. Просто измените тип данных на array, как вы ожидали.

const addEnding = (arr, str) => { 
  let result = '' // You initiated a string as a result not an array
  for(i=0; i<arr.length; i++) {
    result = arr[i]  // The string got replaced every time it interate
    result += str 
  } 
  return result // The result is always the last item
} 
console.log(addEnding(["new", "pander", "scoop"], "er"))

const arr =["new", "pander", "scoop"]
const str = 'er'

const addEnding = (arr, str) => { 
  let result = []; // Init an array as format output
  for(i=0; i<arr.length; i++) {
    result[i] = arr[i] + str  // assign like this
  } 
  return result 
} 
console.log(addEnding(arr, str))
1 голос
/ 03 апреля 2019
const addEnding = (arr, str) => {
    let result = []
    for(i = 0; i < arr.length; i++){
        result[i] = arr[i] + str
    }
    return result
}
1 голос
/ 03 апреля 2019

Вы можете использовать Array # map вместе с String # concat

function addEnding(words, suffix) {
  return words.map(word => word.concat(suffix))
}

const output = addEnding(["clever", "meek", "hurried", "nice"], "ly");
console.log(output);
1 голос
/ 03 апреля 2019

Если вы хотите использовать цикл и хотите сделать это функционально (по вашему выбору), то вы можете попробовать вот так.

Я выполнил операторы на Узле REPL .

Примечание " Использование метода map () возвращает новый массив, но не изменяет существующий. Лучше использовать циклы for / forEach, если вы хотите обновить существующий массив.

Ваша ошибка: В вашем случае маленькая ошибка, которую вы сделали, это «вы использовали результат переменную и обновили ее. Используйте arr[i] = arr[i] + str.

> const addEnding = (arr, str) => {
... arr.forEach((item, i) => {
.....     arr[i] = item + str;
..... })
... return arr
... }
undefined
> 
> addEnding(["clever", "meek", "hurried", "nice"], "ly")
[ 'cleverly', 'meekly', 'hurriedly', 'nicely' ]
> 
> addEnding(["new", "pander", "scoop"], "er")
[ 'newer', 'panderer', 'scooper' ]
> 
1 голос
/ 03 апреля 2019
function addSuffix(arr, suff){
    var newArr=[];
    for (var i = 0; i < arr.length; i++)
       newArr.push(arr[i] + suff);

    return newArr;

}
1 голос
/ 03 апреля 2019

Попробуйте следующий код

function addEnding(array, suffix) {

  if (Array.isArray(array)) {
    for (var i = 0; i < array.length; i++) {
      array[i] = array[i] + suffix;
    }
  }
  return array;
}

console.log(addEnding(["clever", "meek", "hurried", "nice"], "ly"));
1 голос
/ 03 апреля 2019

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

Используя строковую интерполяцию, вы можете легко добавить суффикс

function addEnding(arr, end) {
  return arr.map(word => `${word}${end}`);
}

console.log(addEnding(["clever", "meek", "hurried", "nice"], "ly"))
0 голосов
/ 03 апреля 2019

Вы можете сделать это с помощью приведенной ниже функции, если хотите использовать традиционный цикл for.

function addEnding(arr, end) {
  for(let i=0; i<= arr.length-1; i++)
      arr[i] += end;
  return arr;
}
0 голосов
/ 03 апреля 2019

Использовать Array.prototype.map ()

const addEnding = (array, suffix) => array.map(word => `${word}${suffix}`);
const result = addEnding(["clever", "meek", "hurried", "nice"], "ly");

console.log(result);
0 голосов
/ 03 апреля 2019

Используйте map, который вернет новый массив слов, образованный путем объединения слов из исходного массива и суффикса

function addEnding(array, suffix) {
  // assuring input is array otherwise map will not work
  if (Array.isArray(array)) {
    return array.map(item => item + suffix)
  }
}
   console.log(addEnding(["clever", "meek", "hurried", "nice"], "ly"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...