在分配作为数组的函数参数时使用spread运算符

时间:2018-01-17 09:32:43

标签: javascript

我正在记录' undefined'具有以下功能:



const names = ["James", "Simon", "Alex"];

function fullName(...argument) {
  argument.map(function(name) {
       return `${name} Surname`
      })
}
      console.log(fullName(names)) //Error
      
      




提前致谢

2 个答案:

答案 0 :(得分:1)

您需要向地图添加return语句,因为该函数不返回任何返回undefined的内容。

  

但是我仍然感到有点怀疑为什么使用传播操作符和   传递它,因为如果你愿意,它将只选择数组的最后一个值   将它添加到您需要传递数组的数组中的每个元素   而不是单个元素



const names = ["James", "Simon", "Alex"];

function fullName(...argument) {
  return argument.map(function(name) {
       return `${name} Surname`
      })
      }
      console.log(fullName(names));
      
      




我觉得应该是你打电话



const names = ["James", "Simon", "Alex"];

function fullName(names) {
  return names.map(function(name) {
       return `${name} Surname`
      })
      }
      console.log(fullName(names));




答案 1 :(得分:0)

因此,正如我在评论中所提到的那样,您不清楚自己在这里想要实现的目标。首先,那不是spread运营商。函数参数列表中使用的...表示法适用于rest parameters

  

rest参数语法允许我们将无限数量的参数表示为数组。

这对您的示例代码意味着当您传入names然后使用rest parameters时,您的名字数组将被放置在一个新数组中,这意味着您的map会只迭代第一个元素(数组)来产生:

[
  "James,Simon,Alex Surname"
]

......这是错误的。

你需要做的就是传入数组,让函数接受一个数组作为参数,映射名称并返回新数组。



const names = ["James", "Simon", "Alex"];

function fullName(arr) {
  return arr.map(name => `${name} Surname`);
}

console.log(fullName(names));