使用Map + Rest Operator(JavaScript)

时间:2019-04-21 20:34:49

标签: javascript arrays function ecmascript-6

此功能可以执行我想要的操作,但不能执行我期望的操作。我希望它能创建两个数组,因为... args创建了一个传递参数的数组,而map()对它所连接的数组的每个值都做了一些处理,并将结果存储在一个新数组中。有人可以告诉我为什么这个函数不能创建两个数组吗?

let practiceFunc = (...args) => {
 let arr = args.map((e) => {
  return e + 1
 })
  
 return arr ;
} 

console.log(practiceFunc(1,2,3)) ;
document.write(practiceFunc(1,2,3)) ;

1 个答案:

答案 0 :(得分:0)

它确实创建了两个数组,但是您只能使用一个-arr,即从函数返回的数组。也使用args,但是就像map中使用的数组一样-您可以轻松地省略它并使用arguments(但是,这需要ES5函数,因为箭头函数不需要拥有自己的arguments,则必须使用Object.values)提取值:

let practiceFunc = function() {
  let arr = Object.values(arguments).map((e) => {
    return e + 1
  });
  return arr;
}

console.log(practiceFunc(1, 2, 3));
document.write(practiceFunc(1, 2, 3));