在 javascript 中创建一个函数,使 returns 数组和元素的顺序相反

Make a function in javascript that returns the array and elements in reverse order

正如我在标题中所说,我想制作一个接收数组的函数,并且 return 以相反的顺序接收所有元素。我研究了一点 javascript,但这困扰了我一段时间。我做了两个函数来表达清楚,连我的朋友都不明白这个概念,第二个是那个在打扰我。

const reverse = (pal) => {
  var aux = "";
  for(var i in pal){
      aux = pal[i] + aux;
  }
  return aux;
}
console.log(reverse("are")); //=> returns "era"

上面这个函数工作正常,return只有一个词,接下来需要return数组和所有的词倒过来(以防万一有人不明白)

const reverPal = (pal) => {
  let aux = "";
  let aux1 = "";
  for (var i in pal) {
      aux += pal[i] 
      for (var i in aux.length) { //I think the problem starts here
          aux.forEach((word) => {
              word.reverse();
              aux1 += word;
          })
      }
  }
  return aux1;
}

console.log(reverPal(["hello", "how", "are", "you"]));
//should return = "olleh", "woh", "era", "ouy"
//but returns nothing in this code  

有人可以帮助我吗?

I want to make a function that receives an array and return all the elements in reverse order.

如果要反转数组元素顺序:

function reverseArr(arr){
    var outArr = [];
    for (var i = arr.length-1;i>=0;i--){
        outArr.push(arr[i]);
    }
    return outArr;
}
console.log(reverseArr([1,2,3]));
// [3, 2, 1]

如果要在字符串中反转字符:

function reverseString(s){
   var outS = "";
    for (var i = s.length-1;i>=0;i--){
        outS += s[i];
    }
    return outS;
}
console.log(reverseString("abc中"));
// 中cba

您总是可以只使用 reverse() 函数。此函数将执行以下操作:

  • map() 执行一个 foreach 循环,并简单地 returns 结果作为数组中的新元素。
  • split() 将单个单词转换为字母数组。 hi => ['h', 'i']
  • reverse() 颠倒元素的顺序。 ['h', 'i'] => ['i', 'h']
  • join() 获取数组的元素并将其转换回字符串。 ['i', 'h'] => ih

const reverPal = (pal) => {
  return pal.map(word => word.split('').reverse().join(''));
}

console.log(reverPal(["hello", "how", "are", "you"]));

反转字符串的一种简单、实用的方法是将其展开到一个数组中并调用 reverse() on it and the join() 它备份:

let word = "hello"

console.log([...word].reverse().join(''))

您可以通过 map():

将此应用于数组的每个元素

reverPal = (arr) => arr.map(word => [...word].reverse().join(''))

console.log(reverPal(["hello", "how", "are", "you"]))

您没有在第二个函数中创建数组

const reverPal = (pal) => {
let aux = "";
let aux1 = "";
for (var i in pal) {
    aux += pal[i] 
    for (var i in aux.length) { //I think the problem starts here
        aux.forEach((word) => {
            word.reverse();
            aux1 += word;
        })
    }
}
return aux1;
} //console.log(reverPal(["hello", "how", "are", "you"]);
  //should return = "olleh", "woh", "era", "ouy"
  //but returns nothing in this code   

您想 reverPal 到 return 一个数组,但是您要在哪里创建数组?

您似乎只想在第二个函数中使用第一个函数

const reverse = (pal) => {
    var aux = "";
    for(var i in pal){
        aux = pal[i] + aux;
    }
    return aux;
}

const reverPal = (pal) => {
    let aux1 = [];
    for (var i in pal) {
        aux1.push(reverse(pal[i])); 
    }
    return aux1;
}; 
console.log(reverPal(["hello", "how", "are", "you"]));
  //should return = "olleh", "woh", "era", "ouy"
  //but returns nothing in this code

或者,如果您不想在第二个中使用第一个,则只需将第一个粘贴到第二个中

const reverPal = (pal) => {
    let aux1 = [];
    for (var i in pal) {
      var pal1 = pal[i];
      var aux = "";
      for(var i in pal1){
          aux = pal1[i] + aux;
      }
      aux1.push(aux); 
    }
    return aux1;
}; 
console.log(reverPal(["hello", "how", "are", "you"]));
  //should return = "olleh", "woh", "era", "ouy"
  //but returns nothing in this code

综上所述,您可能应该了解一些关于 JavaScript

的事情
  • 不要在 JavaScript 中使用 for(elem in array)

    参见:Why is using "for...in" with array iteration a bad idea?

  • 考虑永远不要使用 var

    现在 constlet 都存在,没有理由使用 varvar 有许多 constlet 都解决的问题。

    参见:https://hackernoon.com/why-you-shouldnt-use-var-anymore-f109a58b9b70

  • 如果您只是在寻找解决方案而不是 "making a function" 的实际问题,其他人已经发布了更多惯用的解决方案。

由于您已经有一个输出反向单词的工作函数,您可以将该函数传递给 Array.map。

const reverse = (pal) => {
  var aux = "";
  for(var i in pal){
      aux = pal[i] + aux;
  }
  return aux;
}

const reverPal = (arr) => {
  return arr.map(reverse);
}

console.log(reverse("hello"));
console.log(reverPal(["hello", "how", "are", "you"]));
//should return = "olleh", "woh", "era", "ouy"