如何使用map反转数组?

时间:2019-03-04 18:13:03

标签: javascript

运行此代码时,我得到“数组”未定义的错误。在我的解决方案中,我需要使用map()来反转数组。

var names = ["Lars", "Jan", "Peter","Bo", "Frederik","Anna"];

 var newArray = array.slice(0).reverse().map(function(name){
        return name;
    });

console.log(backwards(newArray));

3 个答案:

答案 0 :(得分:4)

您可以使用计算出的索引来映射项目。

var names = ["Lars", "Jan", "Peter", "Bo", "Frederik", "Anna"],
    reversed = names.map((_, i, a) => a[a.length - i - 1]);

console.log(reversed);

答案 1 :(得分:3)

您必须提供数组names而不是使用未定义的array

var names = ["Lars", "Jan", "Peter", "Bo", "Frederik", "Anna"]
var newArray = names.slice(0).reverse().map(function(name) {
  return name;
});
console.log(newArray)

在这种情况下,大多数功能也不起作用。如注释中所述,您实际上只需要names.reverse()

如果您确实想使用map(),则要复杂一点,而不是用于反转的正确函数。


更新

  

如何将其转换为函数?

reverse已经是一个函数,但是如果您要使用map并使用es6样式约定(const foo = () => {}))创建新函数,则可以将map用作迭代器,例如{{3 }}回答了她。

var names = ["Lars", "Jan", "Peter", "Bo", "Frederik", "Anna"]
const backwards = (arr) => arr.map((_, i) => arr[arr.length - i - 1]);

console.log(backwards(names))
console.log(backwards([0, 1, 2]))

答案 2 :(得分:3)

嗯,使用地图没有意义,可以通过这种方式简单地完成

var newArray = names.reverse();